View Titel & Argumente
am 03.08.2008 - 19:48 Uhr in
Hi,
ich habe folgendes Problem. Ich habe eine View erstellt.
Dabei verwende ich Argumente, dadurch sollte auch der Titel der View dynamisch sein.
Leider bin ich mit Views noch nicht so vertraut und habe deshalb keinen Plan wie ich das View Objekt verändere.
Die Veränderung soll nur bei einem bestimmten Content Type (Comp_View_BY_ARG)angewendet werden.
Der Titel der später für die View verwendet werden soll ist als Field im Node Objekt vorhanden.
Mein Ansatz:
folgender Schnipsel in meine node_content-type.tpl.php
<?php
if($view['name'] == "Comp_View_BY_ARG") $view['page_title'] = $node->field_name[0]['view']; print($view['page_title']);
?>
Das funktioniert nicht.
Stimmt der Code ? Und wo muß er hin ??
Mir http://www.drupalcenter.de/node/11796 geholfen.
Ich habe den Code an mein Problem angepasst:
<?php
if ( $view['name'] == "Comp_View_BY_ARG_NEW" ) {
$myterm = $node->field_company[0]['view'];
drupal_set_title($myterm->name);
}
?>
Aber wo kann ich den View Namen abgreifen ???
::UPDATE::
<?php
$myterm = $node->field_company[0]['view'];
drupal_set_title($myterm);
?>
In meine node_content-type.tpl.php eingefügt funktioniert es!
Leider bei allen Views.(Logisch) Wie kann ich das auf einen Typ beschränken ??
Vielen Dank für eure Hilfe,
Ralph
- Anmelden oder Registrieren um Kommentare zu schreiben
Lass Begriffe wie View Object und Node Object mal weg
am 03.08.2008 - 22:29 Uhr
@binki@drupal.org,
der gepostete Link bezieht sich auf ein Problem unter Drupal 6.
Dein Problem bezieht sich auf Drupal 5. Im Zusammenhang mit Views kann man da nur bedingt Zusammenhaenge herstellen - wenn man von den Drupalfunktionen mal absieht.
Da Du es wohl auf die genannten Funktionen absiehst.
In Deinem erstellten View gibt es die in meinem Loesungspost genannten 2 Bereiche: Kopftext, Leertext (Empty Text). Hier ein Screenshot:
In diese beiden Bereiche wird der TPHP-Code fuer die Erzeugung der beiden Titel eingetragen. Als Beipiel der Screenshot des Kopfbereiches.
Das Eingabeformat muss auf PHP Code umgeschalten werden.
Soviel zum genannten Link.
======================================================================================================
Nun zu Deiner Problemschilderung.
Dabei verwende ich Argumente, dadurch sollte auch der Titel der View dynamisch sein.
Du benoetigst keine Argumente um den Titel des View dynamisch zu aendern. Du schreibst ja selbst, das der Grund der Titelaenderung anderweitig bekannt ist:
Die Veränderung soll nur bei einem bestimmten Content Type (Comp_View_BY_ARG)angewendet werden
Ich verstehe das so das nur bei Nodes eines bestimmten Typ der Titel geaendert wird.
Nun muss aber weiter davon ausgegangen werden das der View nur bei einer einzelnen Anzeige von Inhalten Nodes eines Typs verwendet. Wenn das nicht der Fall ist kann die gestellte Bedingung, nur bei einem bestimmten Content Type, nicht erfuellt werden und bei einer Prufung der aktuell angezeigten Inhalte auf den Nodetype wurde kein eindeutiges Ergebnis entstehen welche die genannte Bedingung erfuellt.
Der Titel der später für die View verwendet werden soll ist als Field im Node Objekt vorhanden.
Nun ist es an Dir zu erklaeren was Dein View macht bzw. anzeigt.
Am Besten Du erklaerst noch einmal was Du erreichen willst. Lass dabei bitte der Einfachheit halber Begriffe wie View Object und Node Object mal weg.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
@quiptime, vielen Dank für
am 03.08.2008 - 23:02 Uhr
@quiptime,
vielen Dank für die schnelle Antwort!
Ich habe eine View erstellet, die Argumente verwendet. Beim erstellen der View habe ich keinen Titel angegeben.
Der Titel ist nicht als Argument verfügbar.
Der Titel der View ist in der Node enthalten.
$node->field_company[0]['view']
Das ist das zugehörige CCK Field.
Kurzgesagt.. die Überschrift ist ein Teil des Inhalts.
Cheers,
Ralph
Na wo ist das Problem? Hier ist die Lösung.
am 03.08.2008 - 23:19 Uhr
Na wo ist das Problem?
Die Veränderung soll nur bei einem bestimmten Content Type (Comp_View_BY_ARG)angewendet werden.
Das kann im View im Bereich des Kopftextes eingetragen werden:
<?php
if ( $node->type == 'Comp_View_BY_ARG' ) {
drupal_set_title($node->field_company[0]['view']);
}
?>
Das Eingabeformat am Textbereich im View auf PHP Code einstellen.
Screenshot:
Was Du in Deinem View mit einem Argument erreichen moechtest ist mir unklar.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
da hab ich mich wohl
am 03.08.2008 - 23:58 Uhr
da hab ich mich wohl verzettelt zu später stunde.
<?php
if ( $view->name == 'Comp_View_BY_ARG' ) {
drupal_set_title($node->field_company[0]['view']);
}
?>
Das ist was ich brauche, da habe ich wohl das falsche gefragt.
Wo muß ich den Code einfügen, damit es den View Namen findet??
Ganz Platt:
<?php
drupal_set_title($node->field_company[0]['view']);
?>
Im Header der View funktioniert das nicht.
Danke,
Ralph
CCK Feld sprich mit mir
am 04.08.2008 - 00:09 Uhr
Im Header der View funktioniert das nicht.
Du meinst schon den im Screenshot bezeichneten Kopftext im View?
Was passiert mit
<?php
drupal_set_title('Hallo Welt');
?>
Wenn" Hallo Welt" als Titel zu sehen ist dann stimmt ganz Einfach Dein
$node->field_company[0]['view']
nicht.Linktipp: CCK Feld sprich mit mir
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
@quiptime, vielen Dank für
am 04.08.2008 - 07:05 Uhr
@quiptime,
vielen Dank für Deinen Geduld.
Ralph
Und wie ist nun der Stand der Dinge?
am 04.08.2008 - 09:18 Uhr
Und wie ist nun der Stand der Dinge? Was ist mit der Generierung des Titel aus dem CCK Feld?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
@quiptime,
am 11.08.2008 - 13:30 Uhr
@quiptime,
leider sehr unbefriedigend. Hatte letzte Woche keine Zeit auch nur einen Gedanken daran zu haben.
Neue Woche, neues Glück !
Deinen Link zu "CCK Feld sprich mit mir" habe ich mir durchgelesen, aber ich konnte das nicht auf mein Problem anwenden.
drupal_set_title("Hello little Idiot !");
Funktioniert wunderbar!
Wenn" Hallo Welt" als Titel zu sehen ist dann stimmt ganz Einfach Dein $node->field_company[0]['view'] nicht.
Wenn ich direkt im Node template
print_r $node;
einfüge wird das Feld ausgegeben und trägt auch den Namen.Ich habe es(
print_r $node;
) in den Head der View GUI einfügt, dort erzeugt es einen Fehler.Wie schaffe ich es ein CCK Feld einer Node anzuzeigen(auszulesen), die in einer View angezeigt wird???
Und wo muß ich den Code einfügen ???
Vielen Dank für Eure Hilfe !!!
Cheers,
Ralph
Es ist der Unterschied
am 11.08.2008 - 13:48 Uhr
Wie schaffe ich es ein CCK Feld einer Node anzuzeigen(auszulesen), die in einer View angezeigt wird???
Die Erklaerung findest Du in meinem Blogbeitrag "CCK Feld sprich mit mir"! Bitte lese meinen Beitrag weniger fluechtig - Sternchen.
Und wo muß ich den Code einfügen ???
Du willst den Code des CCK Feldes als Titel haben:
<?php
$mytitle = $node->field_company[0]['value'];
drupal_set_title($mytitle);
?>
oder kuerzer:
<?php
drupal_set_title($node->field_company[0]['value']);
?>
Um voran benannten Code verwenden zu koennen ist es Vorrausetzung das zum Zeitpunkt der Ausfuehrung dieses Code (durch den View) das Nodeobject bekannt bzw. gefuellt ist. Ist dies nicht der Fall wird nichts angezeigt.
PS
Sternchen:
Es ist der Unterschied zwischen
Deinem:
$node->field_company[0]['view']
UND
meinem:
$node->field_company[0]['value']
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Danke für die schnelle
am 11.08.2008 - 20:14 Uhr
Danke für die schnelle Antwort.
Ich habe
drupal_set_title($node->field_company[0]['value'])
in den Header der View GUI eingefügt.Leider bekomme ich nichts angezeigt.
Liegt wohl an....
Um voran benannten Code verwenden zu koennen ist es Vorrausetzung das zum Zeitpunkt der Ausfuehrung dieses Code (durch den View) das Nodeobject bekannt bzw. gefuellt ist. Ist dies nicht der Fall wird nichts angezeigt.
Welche möglichkeiten gibt es das Nodeobject zu füllen?
Gibt es noch andere Wege den Titel eine View zu manipulieren?
Die Erklaerung findest Du in meinem Blogbeitrag "CCK Feld sprich mit mir"! Bitte lese meinen Beitrag weniger fluechtig
Hab es mir mehrfach durchgelesen aber konnte es nicht auf mein Problem anwenden. Vielleicht kannst Du mir einen Hinweis geben....
Cheers,
Ralph
Zitat: Welche
am 11.08.2008 - 21:28 Uhr
Welche möglichkeiten gibt es das Nodeobject zu füllen?
Ich gehe von dem aus was Du in den voran genannten Posts geschrieben hast: Ein View der eine Node anzeigt.
Ist dem so das Dein View eine einzelne Node anzeigt?
==========================================================================================================
Nodeobject initialisieren:
<?php
global $node;
?>
Nodeobject laden an Hand der bekannten Node ID:
<?php
$mynode = node_load('hier-die Node-id');
?>
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Zitat: Ich gehe von dem aus
am 12.08.2008 - 00:10 Uhr
Ich gehe von dem aus was Du in den voran genannten Posts geschrieben hast: Ein View der eine Node anzeigt.
Ist dem so das Dein View eine einzelne Node anzeigt?
Nein. Hier der Export der View.
$view = new stdClass();
$view->name = 'Comp_View_BY_ARG_NEW';
$view->description = 'Company View By Argument New';
$view->access = array (
0 => '1',
);
$view->view_args_php = '';
$view->page = TRUE;
$view->page_title = '';
$view->page_header = '<?php
drupal_set_title($node->field_company[0][\'value\']);
?>';
$view->page_header_format = '2';
$view->page_footer = '<?php
print_r($arg, true);
echo "test";
?>';
$view->page_footer_format = '2';
$view->page_empty = '';
$view->page_empty_format = '1';
$view->page_type = 'teaser';
$view->url = 'firm/$arg';
$view->use_pager = TRUE;
$view->nodes_per_page = '10';
$view->sort = array (
);
$view->argument = array (
array (
'type' => 'content: field_company_id',
'argdefault' => '1',
'title' => '',
'options' => '',
'wildcard' => '',
'wildcard_substitution' => '',
),
);
$view->field = array (
array (
'tablename' => 'node',
'field' => 'title',
'label' => 'Titel',
'handler' => 'views_handler_field_nodelink',
'options' => 'link',
),
);
$view->filter = array (
);
$view->exposed_filter = array (
);
$view->requires = array(node);
$views[$view->name] = $view;
Nodeobject laden an Hand der bekannten Node ID
Die Node ID ist nicht bekannt.
Ich habe diesen Schnipsel getestet und der bringt das gewünschte Ergebnis.
<?php
$nid =intval(3);
$node = node_load($nid);
drupal_set_title($node->field_company[0]['value']);
?>
Ich benötige das Feld $node->field_company[0]['value'] einer der in der View angezeigten Nodes um sie als Titel für die View zu verwenden.
Oder einfacher die Node ID einer der angezeigten Nodes.
Aber wie ??
Cheers,
Ralph
Neuer Tag neues
am 12.08.2008 - 22:30 Uhr
Neuer Tag neues Glück!
habe ich mir so gedacht, leider konnte ich mein Problem immer noch nicht lösen....
Cheers,
Ralph
Problem noch nicht
am 10.09.2008 - 10:58 Uhr
Problem noch nicht gelöst.
Ich bin immer noch auf der Suche nach einer Lösung meines Problems.
Nochmal kurz zusammengefasst,
Problem: Ich möchte den Titel einer View abhängig vom Inhalt der View darstellen.
Dazu muss ich ein CCK Feld einer der in der View dargestellten Nodes auslesen.
Bzw. benötige ich die Node ID einer der in der View dargestellten Nodes.
Wie bekomme ich die Node ID der in der View dargestellten Nodes.
Sobald ich eine Node ID habe funktioniert folgender Code (die 3 habe ich als Beispiel zum Testen verwendet) Den Code setzen ich im Head der View ein:
<?php
$nid =intval(3);
$node = node_load($nid);
drupal_set_title($node->field_company[0]['value']);
?>
Vielleicht kann mir jemand helfen das Problem zu lösen. Vielen Dank vorab!
Cheers,
Ralph