Überschrifeninhalt an NodeTyp anpassen?
Eingetragen von FlorianAGAI (168)
am 19.12.2007 - 13:18 Uhr in
am 19.12.2007 - 13:18 Uhr in
Hallo ich habe mal wieder eine Frage:
Ich möchte gerne eine Überschrift ändern, und zwar so, dass je nach "Node-typ" etwas anderes geprinted wird.
Ein Pseudocode Beispiel:
<?php if (userprofile) { ?> <h1><?php print $user->profile_realname ?> <?php print $user->profile_lastname ?></h1> <?php } else {
?><h1><?php print $title ?></h1> <?php }?>
Ich müsste jetzt wissen inwiefern es Variablen für den Userbereich gibt...
Im Klartext heisst das: Auf jeder Seite wird der Titel angezeigt, nur wenn die URL Http://www.meindrupal.de/user
lautete wird nicht der Titel angezeigt, sondern "custom" Felder.
Ich hoffe jemand kann mir helfen.
Gruß Florian
- Anmelden oder Registrieren um Kommentare zu schreiben
Du kannst für jede Seite
am 19.12.2007 - 13:42 Uhr
Du kannst für jede Seite verschiedene Template Dateien anlegen, siehe http://www.drupalcenter.de/handbuch/4284
gruß pebosi
Hm ja das will ich nicht
am 19.12.2007 - 13:49 Uhr
Hm ja das will ich nicht (bzw. hab ich schon).
Es ist nur so das das template für die Seite nicht den "titel" beinhaltet. Der Titel wird auf der page.tpl.php eingelesen. Ich möchte jetzt also das auf der page.tpl.php der TITEL AN DEN NODE-TYP angepasst wird.
Wie ist denn die Variable für "user" $node->user? $node_typ? $node-type? $type-node?
"The final answer is 1337"
Man koennte entweder in der
am 19.12.2007 - 14:01 Uhr
Man koennte entweder in der "node.tpl.php" oder in den jeweiligen "node-nodetype.tpl.php" vor der Ausgabe der Ueberschrift den Nodetype pruefen.
In der "node.tpl.php" koennte dies so aussehen:
<?php
mytitle = '<h1 class="nodetitle">'.$title.'</h1>';
if ($node->type == 'nodetype1') {
$mytitle = '<h1 class="nodetype1">'.$title.'</h1>';
} else if ($node->type == 'nodetype2') {
$mytitle = '<h1 class="nodetype2">'.$title.'</h1>';
} else if ($node->type == 'nodetype3') {
$mytitle = '<h1 class="nodetype3">'.$title.'</h1>';
}
?>
Die normale Ausgabe des Titel
<h1><?php print $title; ?></h1>
wird ersetzt mit
<?php print $mytitle; ?>
In den einzelnen "node-nodetype.tpl.php" kann man sich die Pruefung des Nodetype sparen. Man befindet sich ja bereits im in Frage kommenden Nodetype. In diesem Falle braucht man also nur die Ausgabe des Titel zu aendern.
Die Vorbereitung der Aenderung erfolgt mit der Ausgabe differenzierter CSS Klassen im h1 Tag.
Die eigentliche Aenderung des Titel erfolgt auf diese Klassen bezogen in der CSS Datei des Theme.
PS
Leider hast Du in Deiner Fragestellung offengelassen wo der Titel geaendert werden soll. Dein Codesnipped macht keine Angabe ueber seinen Einsatzort.
Das von "userprofile" die Rede ist koennte man das Userprofil vermuten. Aber in diesem Zusammenhang gibt es verschiedene Moeglichkeiten.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Zitat: Wie ist denn die
am 19.12.2007 - 14:05 Uhr
Wie ist denn die Variable für "user" $node->user? $node_typ? $node-type? $type-node?
Bist Du schon mal auf den Gedanken gekommen ein
<?php
print '<pre>';
print_r($node);
print '</pre>';
?>
in einer Templatedatei zu machen um zu erfahren was in $node enthalten ist und wie Du es ansprechen kannst?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
title setzen
am 19.12.2007 - 14:14 Uhr
Wenn ich den Florian jetzt richtig verstanden habe, hat er eine Reihe von nodetype-spezifischen Template-Dateien, will nun aber nicht den Node-Titel, sondern den Seitentitel abhängig vom Nodetyp ändern. Einige mögliche Ansätze wären hierfür IF-Konstrukte in der zuständigen page.tpl.php oder aber auch der Einsatz von drupal_set_titel() innerhalb der node-NODETYPE.tpl.php-Dateien.
Okay.
am 19.12.2007 - 14:27 Uhr
Erstmal Danke für die Antworten...
Ich habe erstmal die "einfachste" Variante gewählt....Ich habe eine page-user.tpl.php erstellt.
Wenn ich also die URL www.meindrupal.de/user aufrufe, wird nicht die page.tpl.php aufgerufen, sondern die user-page.tpl.php, ich kann also anstatt $print title alles eingeben was ich möchte.
Der Zweck ist also erfüllt. DANKE!
Neues Problem: Ich habe in meinem Userprofil mehrere Felder eingefügt, wie z.B.
First Name (profile_firstname) aufrufen kann ich das Ganze mit $user->profile_firstname.
Leider werden diese Felder nicht auf der user-page.tpl.php ausgegeben...weiss jemand warum?
Komisch
am 19.12.2007 - 16:00 Uhr
Die Felder im Profil sollten doch eigentlich global verfügbar sein oder?
Neuer Thread
am 19.12.2007 - 17:46 Uhr
Starte einen neuen Thread mit dem neuen Thema.