2010-05-06 4 views
1

J'ai créé un type de contenu pour les liens, j'essaie de créer un répertoire de liens. Les gens n'ont qu'à soumettre le lien, la description est volontaire. Si aucune description n'est entrée, je souhaite que l'en-tête "description" disparaisse. Le champ de description est le corps du noeud. En ce moment, mon extrait ressemble à ceciMasquer l'en-tête si le corps du nœud est vide - Drupal php snippet help

<?php if (!empty($node->body)) {?> 
<div class="field field-type-link field-field-link-archive"> 
<h3>Description</h3> 
<?php print $node->content['body']['#value'] ?></div> 
<?php }?> 

Je m'y attendais pour vérifier si le corps de noeud n'est pas vide, et si elle ne l'est pas imprimerons ce qui est là. Le problème est que l'en-tête Description est toujours imprimé même si le corps du nœud est vide. Quelqu'un peut-il voir ce qui ne va pas?

Répondre

3

$ node-> corps est tout le contenu du noeud avec des liens, informations auteur, date de publication, etc.
Vous presque obtenu, voir:

<?php if (!empty($node->content['body']['#value'])) {?> 
<div class="field field-type-link field-field-link-archive"> 
<h3>Description</h3> 
<?php print $node->content['body']['#value'] ?></div> 
<?php }?> 

De plus, certains modules wysiwyg-s ajoutent automatiquement des tags comme p. Check it ...

+0

Parfait! J'étais presque là, j'ai essayé $ node-> content ['body'], mais sans le dernier tag de valeur. Votre extrait fait exactement ce que j'attendais. Merci! – Toxid

0

$ node-> corps est probablement pas vide

Ce sont des choses que php considère être vide

"" (an empty string) 
0 (0 as an integer) 
"0" (0 as a string) 
NULL 
FALSE 
array() (an empty array) 
var $var; (a variable declared, but without a value in a class) 

faire un var_dump sur elle pour tester

Et phps syntaxe abrégée a été fait pour des choses comme ça. vous d'hôtel devrait l'utiliser, il est beaucoup plus facile à lire

<?php if(): ?> 
// do stuff 
<?php endif; ?> 
+0

Je ne suis pas encore bien avec php, mais je vais voir ce que foreach fait. Merci! – Toxid

+0

je voulais mettre le raccourci pour une instruction if – Galen

+0

Ah, je vois, au lieu des parenthèses {} j'utilise: et endif ;. Tu as raison, ça semble beaucoup mieux! – Toxid

0

Dans Drupal 7, cela va aussi travailler:

<?php if(!empty($content['body'])) { ?> 
<div class="field field-type-link field-field-link-archive"> 
    <h3>Description</h3> 
    <?php print render($content['body']); ?> 
</div> 
<?php }?> 
Questions connexes