Afficher des contenus sous condition
Affichage conditionnel au fait que nous ne soyons pas dans $page:
1 2 3 |
<?php if (!$page): ?> <h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php print $title; ?></a></h2> <?php endif; ?> |
ligne 1: si pas dans le contexte de $page
.
Extraire des éléments d’un objet donné
Le fichier <mon_projet>\sites\all\themes\<mon_theme>\node.tpl.php
qui est une surcharge du fichier <mon_projet>/modules/node/node.tpl.php
.
Par défaut, on affiche à l’écran l’intégralité des informatiosn contenues dans l’objet $content
via print render($content);
.
Ce que je veux, c’est à en extraire la liste des tags pour l’afficher à un autre endroit dans le template.
1 2 3 4 5 6 7 8 |
<div class="content"<?php print $content_attributes; ?>> <?php // We hide the comments and links now so that we can render them later. hide($content['comments']); hide($content['links']); print render($content); ?> </div> |
En en-tête de fichier :
1 2 3 4 5 6 7 8 9 |
/** * @file * Default theme implementation to display a node. * * Available variables: * - $content: An array of node items. Use render($content) to print them all, * or print a subset such as render($content['field_example']). Use * hide($content['field_example']) to temporarily suppress the printing of a * given element. |
En utilisant la méthode dpm() de devel, on a accès en front à toutes les informations contenues dans l’objet $content
.
1 |
<?php dpm($content); ?> |
Ce qui nous donne en front :
Code pour afficher uniquement les Tags, extraits de $content
:
1 2 3 4 |
<?php $tags = render($content['field_tags']); ?> <?php if ($tags): ?> | Filed under: <?php print $tags; ?> <?php endif; ?> |
- ligne 1: on crée une variable
$tags
dans laquelle on récupère les informations de l’élémentfield_tags
contenues dans$content
. - ligne 2: je vérifie si il y a du contenu dans
$tags
. - ligne 3: si oui, je l’imprime à l’écran.
A savoir: à partir du moment où j’ai extrait les informations de l’élément field_tags
contenues dans l’objet $content
via <?php $tags = render($content['field_tags']); ?>
, elles ne seront plus affichées quand j’affiche l’objet $content
via <?php print render ($content); ?>
et ceux même si je ne tente pas de les afficher via <?php if ($tags): ?>| Filed under: <?php print $tags; ?><?php endif; ?>
.Cette méthode s’avère donc intéressante si je décide de ne pas afficher certains éléments d’un objet donné.
Il y aurait une possibilité d’afficher les informations 2 fois avec la méthode show() (<?php $tags = show($content['field_tags']); ?>
), mais ça n’a pas marché lors d’un test pas poussé du tout… A creuser donc…
Masquer certains éléments contenus dans un objet
Pour masquer les éléments comments
et links
de l’objet $content
, utiliser la méthode hide()
:
1 2 3 4 5 6 |
<?php // We hide the comments and links now so that we can render them later. hide($content['comments']); hide($content['links']); print render($content); ?> |