Je voulais remplacer page.tpl.php pour un type de contenu spécifique. J'ai essayé ces choses, rien ne fonctionne pour moi.
page--article.tpl.php
page--node--article.tpl.php
page--node--type--article.tpl.php
page--node-type--article.tpl.php
page--type--article.tpl.php
Mais lorsque j’ai ciblé un noeud par numéro, c’est-à-dire page--node--8.tpl.php
, cela a bien fonctionné. Je pense que page--article.tpl.php
aurait dû fonctionner, mais je ne sais pas pourquoi cela ne fonctionne pas.
S'il vous plaît dites-moi si je le nomme mal. et comment puis-je déboguer de telles choses. J'ai entendu dire que je pouvais utiliser le module Devel, mais je n'en savais rien. Un léger indice dans la bonne direction sera apprécié.
Merci d'avance
Vous devez vous assurer que votre modèle peut gérer cela ... J'ai un extrait de code qui a fonctionné pour moi ici:
http://drupal.org/node/1089656#comment-4426790
<?php
function themeName_preprocess_page(&$vars, $hook) {
if (isset($vars['node'])) {
// If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".
$vars['theme_hook_suggestions'][] = 'page__'. $vars['node']->type;
}
}
?>
Avez-vous pensé à vider le cache (sous Administrer> Configuration du site> Performances) pour que Drupal soit "informé" de votre nouveau fichier et l'utilise plutôt que celui par défaut.
Voir ici sur Effacement des données en cache
En outre, vous devrez peut-être ajouter un hook de prétraitement (je n’ai pas utilisé D7 moi-même, mais 5/6 - je pense que cela a légèrement changé.) Ce message sur Drupal Stack Exchange semble donner plus de détails.
Je viens de rencontrer le même problème.
not
page - recipe.tpl.php
bien entendu, il s’agit d’un type de contenu appelé «recette».
TOUJOURS VIDER LE CACHE ...
Accédez à/admin/config/development/performance et cliquez sur le bouton d'effacement du cache. Ce devrait être la première chose à faire si vous avez modifié la structure du backend et que celle-ci ne s'affiche pas comme prévu.
Sinon vous avez presque eu raison
vous permettra de thème le modèle de type de contenu.
Étape 1.créer un type de contenu par exemple: mon type de contenu est "fullwidthpage"
Étape 2. Copiez page.tpl.php et renommez le dossier page - fullwidthpage.tpl in.
Étape 3. Ajoutez ce code à template.php
function <strong>YOUR_THEME_NAME_HERE</strong>_preprocess_page(&$variables) {
if (isset($variables['node']->type)) {
// If the content type's machine name is "my_machine_name" the file
// name will be "page--my-machine-name.tpl.php".
$variables['theme_hook_suggestions'][] = 'page__' . $variables['node']->type;
}
}
N'oubliez pas de changer YOUR_THEME_NAME_HERE
Donc, en fonction de ce que vous essayez d'accomplir, certaines astuces CSS pourraient vous aider.
Par exemple, pour remplacer les règles CSS d'un type de noeud spécifique, rappelez-vous que vos pages pour ce type de noeud auront une classe de corps de "node-type-[TYPE]"
(c'est-à-dire: .node-type-article
).
Vous pouvez ensuite remplacer le CSS comme suit:
body.node-type-article #selector {}
Je sais que c’est une vieille question, mais si d’autres arrivent ici, la façon dont je substitue les types de contenu dans Drupal 7 est la suivante:
noeud - contenttype . tpl
Vous devrez remplacer le modèle de noeud spécifique pour le type de contenu s'il diffère de la page de base. S'il vous plaît vérifier ceci:
http://api.drupal.org/node/19080
Sous cette page, copiez/collez les éléments de la page node.tpl.php et écrasez-les comme vous le souhaitez. Vous pouvez accéder au noeud spécifiquement par $ node
Votre modèle pour les articles serait:
noeud - article.tpl.php
Une fois que cela est créé, assurez-vous de vider le cache pour vous assurer que cela fonctionne.