Notes du livre "Definitive Guide to Drupal 7"

Sur les views.

Ch 15 theming

Global Template Variables

 

Variables dispo dans tous les templates
Variable Description
$is_admin  TRUE si le user logué est admin, FALSE sinon.
$logged_in TRUE le user courrant est logué,FALSE sinon. C'est $user->uid qui est utiliser pour décider, les anonymes ayant tjs un ID=0.
$is_front utilise la fonction drupal_is_front_page() pour voir si la page courante est la home (TRUE sur la home, à moins que la db ne soit pas online), FALSE sinon
$directory Le dossier où se situe le template courant
$user Un object qui contient les info du compte du user logué. On peux y acceder en ajoutant la ligne global $user; dans son template de test (attention, donne des infos sensibles). Il est "requis" d'utiliser  theme('username'); par ex:
theme('username', array('account' => $user)).
$language Un object qui contient des info sur les langues utilisées sur le site - par ex $language->dir (sens/direction du texte) ou encore  $language->language (on y verra en pour l'anglais). On peux aussi ajouter une ligne global $language; dans son template test
$theme_hook_suggestions Un tableau qui contient tous les hooks possibles (utilisées commes variantes pour nommer ses fichiers de templates et noms de fonctions de thème ou encore pour donner un contexte)
$title_prefix and $title_suffix Tableaux rendus contenant des éléments, comme les liens contextuels, à afficher avant et après le titre dans les templates ou en haut/bas des fichiers de templates quand il n'y a pas de titre.

Le module RDF utilise ces variables pour se faufiler vers ses données lors de la phase preprocess. Chacune de ces variables ont 2 versions: une string et un tableau.
La version tableau (a le suffixe _array dans le nom de la variable) est rempli lors de diverses fonctions preprocess, comme template_preprocess() et template_preprocess_node() ou encore template_preprocess_block(). Puis, pendant la phase template_process(), de nouvelles variables contenant une version string (ou plate) de ces tableaux sont crées pour qu'on puisse les utiliser dans des templates.

Variables - Description

  • $attributes attributs HTML qui viennent de modules (souvent RDF) - mis à part pour l'attribut class qui est géré different et séparément
  • $classes classes HTML pour les templates, souvent réservé aux éléments wrapper html (body, div externes dans d'autres fichiers templates) 
  • $title_attributes classes pour le titre (titre d'un node ou bloc) du template, souvent h2
  • $content_attributes classes pour le wrapper div, ou body du template (regarder node.tpl.php)

 

 

 

templates

 

Créer un bloc, en regardant le code de block.tpl.php:

<div id="<?php print $block_html_id; ?>" class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php print render($title_prefix); ?>
<?php if ($block->subject): ?>
  <h2<?php print $title_attributes; ?>><?php print $block->subject ?></h2>
<?php endif;?>
  <?php print render($title_suffix); ?>
  <div class="content"<?php print $content_attributes; ?>>
    <?php print $content ?>
  </div>
</div>

 

En étant non logué, on voit ce code (créé par <?php print $block->subject ?> et <?php print $content ?>):

<div id="block-block-1" class="block block-block">
  <h2>My Custom Block</h2>
  <div class="content">
    <p>Enim quam iusto quam iis enim. Molestie at et diam ut legere. Feugiat tation facilisis
quarta soluta quam. Facilisis lectorum modo nam modo suscipit.</p>
  </div>
</div>

Logué en admin, le code est plus complexe (lex liesn contextuel d'admin sont créés par <?php print render($title_prefix); ?> .

logo drush