J'ai créé un module qui devrait pouvoir afficher le contenu d'un certain type de contenu. L'affichage est un peu complexe et pour pouvoir l'éteindre et tout regrouper j'ai créé un module pour ça.
Mais à la fin, il devrait simplement remplacer le node.tpl.php normal par un fichier .tpl.php personnalisé. Lorsque je mets le fichier dans mon dossier de modèles, il est récupéré et les pages s'affichent comme prévu, mais je ne peux pas le faire fonctionner lorsque le fichier est dans le dossier du module.
J'ai lu beaucoup de choses sur regsiter le fichier .tpl et le prétraitement mais rien qui combine les pièces dont j'ai besoin.
C'est ce que j'ai jusqu'à présent
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';
}
Réponses:
Il n'est pas clair dans votre question si vous placez votre modèle dans
sites/all/custom/modules
ou danssites/all/custom/modules/the_name_of_mymodule
. Ce doit être le plus tard.Cependant, si vous:
admin/appearance
chemin pour forcer une actualisation du registre de thème.... mais toujours pas de dés, vous pouvez toujours spécifier dans votre implémentation hook_theme () la
theme_path
clé:la source
node--app
. Un meilleur nom seraitnode_app
, et vous appelleriez la fonction de thème en faisanttheme('node_app', [$vars]);
Je ne suis pas sûr quetheme('node--app')
c'est quelque chose que j'ai jamais vu, et presque sûr que cela ne fonctionnerait pas.'node__app'
(double soulignement)'node_app'
J'ai pensé publier la solution que j'ai trouvée:
la source
Je l'ai fait fonctionner en suivant ceci:
http://www.metachunk.com/blog/adding-module-path-drupal-7-theme-registry
la source