Ich habe ein Thema erstellt und meine Vorlagendateien in dieser Struktur
- /templates/page/page.tpl.php
- /templates/page/page--node-type.tpl.php
Ich habe eine benutzerdefinierte Seitenvorlage erstellt, die jedoch aus irgendeinem Grund nicht von Drupal übernommen wird. Ich habe meinen Cache geleert und auch versucht, diese Präprozessorfunktion in die Datei theme template.php einzufügen, aber sie funktioniert immer noch nicht.
if (isset($vars['node']))
{
// If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
$vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
}
Jede Hilfe wäre dankbar.
Antworten:
Wie in Drupal 7-Vorlagenvorschlägen angegeben , lautet der von Drupal 7 standardmäßig für Seiten verwendete Vorlagenvorschlag page - [front | internal / path] .tpl.php.
Für eine Seite, die unter http://www.example.com/node/1/edit angezeigt wird, sucht Drupal nach den folgenden Vorlagendateien:
Um zusätzliche Vorschläge hinzuzufügen, sollte Ihr Design template_preprocess_page () implementieren und neue Vorschläge hinzufügen
$variables['theme_hook_suggestions']
($variables
ist die Variable, die als Verweis auf die Funktion übergeben wird).Wenn Sie dies getan haben, liegt der einzige Grund dafür, dass die vorgeschlagene Vorlagendatei nicht verwendet wird, darin, dass die Datei nicht korrekt benannt ist: Wenn die Seite eine Buchseite enthält, sollte die Vorlagendatei beispielsweise page - book.tpl sein .php. Sie können den Code für Ihr Thema ändern und die Vorlage page - node-type.tpl.php verwenden, wenn keine Vorlage wie page - book.tpl.php gefunden wird.
Zu beachten ist auch, dass in theme_get_suggestions () (das ist die Funktion, die von template_preprocess_page () aufgerufen wird ) Bindestriche durch
_
und nicht umgekehrt ersetzt werden. Der Grund dafür wird in einem im Funktionscode angegebenen Kommentar erläutert.quelle
Ich verwende Drupal 7.4, und ich hatte das gleiche Problem und das einzige, was geholfen hat, war dieser Beitrag: Wie man eine benutzerdefinierte page.tpl basierend auf Inhaltstypen hinzufügt
Von der Post:
quelle
Ich habe zu lange versucht, dem obigen Beispiel mit String Replace in Drupal 7.22 zu folgen. Das scheint bei mir nicht zu funktionieren. Interessanterweise scheinen einige Inhaltstypen automatisch vorgeschlagen zu werden, während andere dies nicht tun. Dies ist der Code, der am Ende für mich funktioniert hat.
Der Vorlagenvorschlag für einen front_page-Inhaltstyp wäre dann:
Seite - front_cover.tpl.php
Interessanterweise wird der Codevorlagenvorschlag für den Inhaltstyp "Problem" als page - issue.tpl.php ohne Präprozessorskript ausgegeben !? Dies scheint für meine Zwecke die Ansichtsvorlage zu überschreiben, die einen ähnlichen Pfad verwendet.
dh
view path = / issue / # Vorlagenvorschlag basierend auf dem Inhaltstyp, dh / issue / # / front_cover
quelle