[gelöst]Titel als CSS Klasse anhängen
Eingetragen von Bernsch (243)
am 17.11.2011 - 16:05 Uhr in
am 17.11.2011 - 16:05 Uhr in
Hallo Leute,
ich möchte gerne den Seitentitel bzw. den Nodetitel als CSS-Klasse an meine erzeugten Seite anhängen.
Gibt es da ein Modul bzw. wie kann ich das in einer preprocess Funktion (in der page und/oder in der node???) machen?
Bitte um Hilfe. Danke.
lg, bernsch
- Anmelden oder Registrieren um Kommentare zu schreiben
Wo soll die CSS-Klasse den
am 17.11.2011 - 16:38 Uhr
Wo soll die CSS-Klasse den eingefügt werden bzw. welches Element soll sie bekommen?
preprocess
am 17.11.2011 - 16:40 Uhr
Hallo.
In der [api:template_preprocess_html:7] kannst Du Klassen zum "body"-Tag hinzufügen.
Dazu benötigst Du zusätzlich noch die Funktionen [api:menu_get_object:7] und [api:drupal_html_class:7].
<?php
function MYTHEME_preprocess_html(&$variables) {
if (($node = menu_get_object()) !== FALSE) {
$variables['classes_array'][] = drupal_html_class(filter_xss($node->title, array()));
}
}
?>
In der [api:template_preprocess_node:7] hingegen fügst Du die Klassen zu dem Node-Wrapper selbst hinzu.
<?php
function MYTHEME_preprocess_node(&$variables) {
$variables['classes_array'][] = drupal_html_class(filter_xss($variables['node']->title, array()));
}
?>
Infos zu Details?
am 17.11.2011 - 19:57 Uhr
Super, danke stBorchert! - Werd ich gleich mal ausprobieren...
Hättest du ev. noch Zeit mir die beiden Preprocess Funktionen im Detail zu erklären?
Ich würde gerne den PHP Code besser verstehen lernen bzw. die Preprocess-Funktionen.
Was macht z.B. filter_xxs und warum ist jeweils das ",array( ) ) ); hinten darangeschrieben?
Wäre echt nett von dir. DANKE!
lg
Zitat: Was macht z.B.
am 17.11.2011 - 20:37 Uhr
Was macht z.B. filter_xxs
filter_xss
filtert HTML-Code gegen Cross-Site-Scripting (http://api.drupal.org/api/drupal/core--includes--common.inc/function/fil...)warum ist jeweils das ",array( ) ) ); hinten darangeschrieben?
Weil die Funktion eben zwei bestimmte Parameter erwartet: Den HTML-String und ein Array mit Strings, welches angibt, welche HTML-Tags nicht gefiltert werden sollen. In Stefans Beispiel wird eben ein leeres Array übergeben, womit keine HTML-Tags verschont werden.
Allgemein solltest du dich mal bei der Drupal-API umschauen, wenn du Drupal und den Code besser verstehen willst.
Funktioniert leider nicht
am 02.12.2011 - 18:38 Uhr
Hallo.
In der [api:template_preprocess_html:7] kannst Du Klassen zum "body"-Tag hinzufügen.
Dazu benötigst Du zusätzlich noch die Funktionen [api:menu_get_object:7] und [api:drupal_html_class:7].
<?php
function MYTHEME_preprocess_html(&$variables) {
if (($node = menu_get_object()) !== FALSE) {
$variables['classes_array'][] = drupal_html_class(filter_xss($node->title, array()));
}
}
?>
In der [api:template_preprocess_node:7] hingegen fügst Du die Klassen zu dem Node-Wrapper selbst hinzu.
<?php
function MYTHEME_preprocess_node(&$variables) {
$variables['classes_array'][] = drupal_html_class(filter_xss($variables['node']->title, array()));
}
?>
Danke für den Tipp stBorchert:
Habe jetzt diese beiden Codeschnippsel in meien template.tpl.php kopiert und jeweils mit meinem Themenamen ersetzt und danach Cach gelöscht.
Leider habe ich den Titel meiner Seite nicht als Classe im "body-Tag" bzw. "Node-Wrapper-Tag"... :-(
Kann mir wer sagen woran das liegt?
Danke. lg
template.php
am 03.12.2011 - 10:43 Uhr
... Kann mir wer sagen woran das liegt?
Das hast Du selbst schon mit diesem Satz getan :)
Habe jetzt diese beiden Codeschnippsel in meien template.tpl.php kopiert
Die Datei muss template.php heissen!
template.php
am 31.01.2012 - 23:37 Uhr
Die Datei muss template.php heissen!
... Sorry, ich hab mich vertan....
Der Code funktioniert wie von dir angegeben... DANKE!
lg, bernsch