[gelöst] preprocess template.php: Subtheme Problem
am 12.10.2009 - 14:01 Uhr in
Hallo Community,
habe mir ein Subtheme von Genesis angelegt.
Aller klappt wunderbar. Habe dazu die info angepasst,
alles in einen eigenen Ordner /sites/all/themes/meintheme/
abgelegt. Auch durch das Hinzufügen eigener css-Dateien in
die info (und leeren des Caches) habe ich eine schöne
übersichtliche Struktur.
Nun aber habe ich das Schockerlebnis: Die template.php Datei,
die in meinem theme-Verzeichnis liegt, kann ich für preprocess
nicht ansprechen. Prinzipiell wird die template.php aufgerufen
(ein exit zeigt mir das....*hüstl*), allerdings kann ich
kein
function meintheme_preprocess_node(&$vars, $hook) {
$vars['sample_variable'] = t('Lorem ipsum.');
print 'Beispiel';
exit;
}
antesten. Es greift mein 'meintheme_' einfach nicht. Habe alle Möglichkeiten durchprobiert. Gibt es eine Ausgabe, wie diese preprocess-Präfix erfasst werden kann?
LG,
goisgo
- Anmelden oder Registrieren um Kommentare zu schreiben
print 'Beispiel'
am 12.10.2009 - 20:23 Uhr
print 'Beispiel' wird nicht funktionieren
dagegen sollte aber die variable $sample_variable in deiner node.tpl.php vorhanden sein ;)
einfach die datei node.tpl.php in dein mysubtheme ordner kopieren (cache leeren)
und
<?php print $sample_variable ?>
einfügen.
Hallo, das Beispiel soll ja
am 13.10.2009 - 08:11 Uhr
Hallo,
das Beispiel soll ja nur ein Beispiel sein :)
Als ich in einem anderen Projekt in meinem preprocess_egalwas(&$vars)...
print 'Beispiel' eingebe, dann taucht auch Beispiel auf. Ist ja
nur ein Test um zu prüfen, ob überhaupt diese preprocess_... erkannt
wird. Leider nicht (möchte umbedingt über preprocess gehen, nicht über
Änderung der node.tpl.php oder page.tpl.php etc.
Darum bleibt mein Problem: Warum wird mein meinthema_preprocess_page/node/block...
nicht erkannt, die template.php aber.
Lieben Gruß,
goisgo
node.tpl.php
am 13.10.2009 - 08:18 Uhr
Hast Du im Subtheme-Verzeichnis eine node.tpl.php?
Stefan
--
sei nett zu Deinem Themer
Wir brauchen Deine Stimme für die DrupalCon 2010 oder 2011 in Berlin!
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hallo Stefan, ja. Folgende
am 13.10.2009 - 09:08 Uhr
Hallo Stefan,
ja. Folgende Struktur:
sites/all/themes/meintheme/
=> templates / node / node.tpl.php
=> templates / page / page.tpl.php
usw.
In der node.tpl.php steht auskommentiert:
* @see template_preprocess()
* @see template_preprocess_node()
* @see genesis_preprocess_node()
Ist da etwas falsch?
LG,
goisgo
Ergänzung: wenn ich meine
am 13.10.2009 - 09:28 Uhr
Ergänzung:
wenn ich meine meintheme_preprocess... auf genesis_preprocess... umbennene kommt die Fehlermeldung, dass dies schon im sites/default/themes/genesis/genesis/template.php vorhanden ist.
Tja. Habe nun diese template.php in meine kopiert, die vorhandene gelöscht und kann nun fuhrwerkeln. Allerdings klappt leider die Namensgebung meintheme_ nicht. Woran könnte das denn liegen?
LG,
goisgo
vorschlag
am 13.10.2009 - 15:14 Uhr
wenn man views verwendet braucht man manchmal einen doppelten __ unterstrich vieleicht steht ja darüber was im handbuch???
Grundsätzlich sollte das
am 13.10.2009 - 17:45 Uhr
Grundsätzlich sollte das funktionieren. Wobei man berücksichtigen muss, dass preprocess-Funktionen kaskadiert werden und sich nicht wie theme-Funktionen überschreiben!
Ich habe dieses Szenario gerade nochmal auf eine frischen D6.14 durchgespielt:
1. Ein minimales Subtheme von Garland erzeugt:
sites/all/themes/garland_sub
sites/all/themes/garland_sub/garland_sub.info
sites/all/themes/garland_sub/template.php
2. Das Subtheme konfiguriert (garland_sub.info):
name = Garland Sub
core = 6.x
base theme = garland
;stylesheets[all][] = style.css
stylesheets[print][] = print.css
3. In der tmplate.php folgende Funktion ergänzt:
function garland_sub_preprocess_page(&$vars) {
var_dump('garland_sub_preprocess_page');
}
4. In Garlands eigener template.php gibt es die Funktion phptemplate_preprocess_page(). Dort habe ich eine zweite Funktion ergänzt:
function garland_preprocess_page(&$vars) {
var_dump('garland_preprocess_page');
}
5. Theme garland_sub aktiviert
Beim Aufruf einer Seite werden alle preprocess-Funktionen in der erwarteten Reihenfolge aufgerufen:
string(27) "phptemplate_preprocess_page"
string(23) "garland_preprocess_page"
string(27) "garland_sub_preprocess_page"
Wichtig! Nach jedem Hinzufügen oder Entfernen von preprocess-Funktionen muss der Cache geleert werden!
Markus Kalkbrenner
Cocomore AG
drupal.cocomore.com
Markus Kalkbrenner
bio.logis GmbH
Danke Dir, es lag am Cache
am 14.10.2009 - 08:54 Uhr
Danke Dir,
es lag am Cache leeren.
Komisch: Beim Testen, also ÄNDERN von vorhandenen Funktionen war das Ergebnis sofort sichtbar.
Wäre dann nie darauf gekommen, dass ich beim HINZUFÜGEN oder LÖSCHEN von Funktionen den Cache leeren müsste.
Jetzt klappt's, danke !
LG,
goisgo