web-dev-qa-db-fra.com

Variable pour vérifier si la page est d'un autre type de contenu

Les variables $page et $teaser sont très utiles, mais existe-t-il un moyen de vérifier si je suis dans un type de contenu différent? Par exemple, si j'ai créé un type de contenu nommé Produits, que puis-je taper dans mon fichier de modèle page.tpl.php qui affichera HTML uniquement si la page consultée est de type Produits?

6
enchance

Placez ceci dans le template.php de votre thème, en remplaçant 'THEMENAME' par le nom de votre thème:

function THEMENAME_preprocess_page(&$variables, $hook) {
  $variables['some_html'] = '';
  if (isset($variables['node']) && $variables['node']->type == 'product') {
    $variables['some_html'] = '<p>Hello world!</p>';
  }
}

Et utilisez ceci dans votre page.tpl.php:

<?php print $some_html; ?>

Alternativement, si vous souhaitez conserver la chaîne HTML dans votre fichier de modèle, je le ferais dans template.php:

function THEMENAME_preprocess_page(&$variables, $hook) {
  $variables['print_extra_header'] = false;
  if (isset($variables['node']) && $variables['node']->type == 'product') {
    $variables['print_extra_header'] = true;
  }
}

Et utilisez ceci dans page.tpl.php:

<?php if ($print_extra_header) : ?> <h1>THIS GETS PRINTED</h1> <?php endif; ?>

Assurez-vous de vider le cache après avoir créé la fonction THEMENAME_preprocess_page, sinon Drupal ne saura pas qu'il est là et ne s'exécutera pas.

12
marcvangend