Ich habe ein Modul erstellt, das den Inhalt eines bestimmten Inhaltstyps anzeigen soll. Die Anzeige ist etwas komplex und um es ausschalten und alles zusammenfassen zu können, habe ich ein Modul dafür erstellt.
Aber am Ende sollte es nur die normale node.tpl.php mit einer benutzerdefinierten .tpl.php-Datei überschreiben. Wenn ich die Datei in meinen Vorlagenordner lege, wird sie aufgenommen und die Seiten werden wie beabsichtigt angezeigt, aber ich kann sie nicht zum Laufen bringen, wenn sich die Datei im Modulordner befindet.
Ich habe viele Dinge über das Registrieren der .tpl-Datei und den Vorprozess gelesen, aber nichts, was die Teile kombiniert, die ich brauche.
Das habe ich bisher
function apps_theme($existing, $type, $theme, $path) {
$items = array(
'node--app' => array(
'template' => drupal_get_path('module', 'app') . '/node--app',
'variables' => array('node' => (object)array())
)
);
return $items;
}
function apps_preprocess_node(&$vars) {
$variables['theme_hook_suggestions'][] = 'node__app';
}
Antworten:
In Ihrer Frage ist nicht klar, ob Sie Ihre Vorlage in
sites/all/custom/modules
oder in platzierensites/all/custom/modules/the_name_of_mymodule
. Es muss das spätere sein.Wenn Sie jedoch:
admin/appearance
Pfad, um eine Aktualisierung der Themenregistrierung zu erzwingen.... aber immer noch keine Würfel, Sie können in Ihrer hook_theme () - Implementierung immer den
theme_path
Schlüssel angeben :quelle
node--app
. Ein besserer Name wärenode_app
, und Sie würden die Themenfunktion aufrufen, indem Sie tun.theme('node_app', [$vars]);
Ich bin mir nicht sicher, obtheme('node--app')
ich das jemals gesehen habe, und fast sicher, dass es nicht funktionieren würde.'node__app'
(doppelter Unterstrich) nicht'node_app'
Ich dachte, ich würde die Lösung posten, die ich gefunden habe:
quelle
Ich habe es funktioniert, indem ich folgendes befolgte:
http://www.metachunk.com/blog/adding-module-path-drupal-7-theme-registry
quelle