J'ai créé un thème et j'ai mes fichiers de modèles dans cette structure
- /templates/page/page.tpl.php
- /templates/page/page--node-type.tpl.php
J'ai créé un modèle de page personnalisé mais pour une raison quelconque, il n'est pas récupéré par Drupal. J'ai effacé mon cache et j'ai également essayé d'ajouter cette fonction de préprocesseur dans le fichier theme template.php mais cela ne fonctionne toujours pas.
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);
}
Toute aide serait appréciée.
Réponses:
Comme indiqué dans Drupal 7 Template Suggestions , la suggestion de modèle utilisée par défaut depuis Drupal 7 pour les pages est page - [front | internal / path] .tpl.php.
Pour une page visible sur http://www.example.com/node/1/edit , Drupal rechercherait les fichiers de modèle suivants:
Pour ajouter des suggestions supplémentaires, votre thème doit implémenter template_preprocess_page () et ajouter de nouvelles suggestions dans
$variables['theme_hook_suggestions']
($variables
est la variable transmise par référence à la fonction).Si vous avez fait cela, la seule raison pour laquelle le fichier de modèle suggéré n'est pas utilisé est que le fichier n'est pas correctement nommé: dans le cas où la page affiche une page de livre, par exemple, le fichier de modèle doit être page - book.tpl .php. Vous pouvez modifier le code de votre thème et le laisser utiliser le modèle page - node-type.tpl.php, s'il ne trouve pas de modèle comme page - book.tpl.php.
A noter également que, dans theme_get_suggestions () (qui est la fonction appelée par template_preprocess_page () ), les tirets sont remplacés par
_
, et non l'inverse. La raison de cette opération est expliquée dans un commentaire rapporté dans le code de fonction.la source
J'utilise Drupal 7.4, et j'ai eu le même problème et la seule chose qui a aidé était ce post: Comment ajouter un page.tpl personnalisé basé sur les types de contenu
De la poste:
la source
J'ai passé trop de temps à essayer de suivre l'exemple ci-dessus en utilisant le remplacement de chaîne dans Drupal 7.22. Cela ne semble pas fonctionner pour moi. Fait intéressant, certains types de contenu semblent être suggérés automatiquement, tandis que d'autres ne le font pas. C'est le code qui a fonctionné pour moi à la fin.
donc la suggestion de modèle pour un type de contenu front_page ce serait alors:
page - front_cover.tpl.php
Fait intéressant, la suggestion de modèle de code pour le type de contenu «problème» se présente sous la forme d'une page - issue.tpl.php sans avoir besoin d'un script de préprocesseur!? À mes fins, cela semble remplacer le modèle de vue qui utilise un chemin similaire.
c'est à dire
afficher le chemin = / issue / # suggestion de modèle en fonction du type de contenu, par exemple / issue / # / front_cover
la source