Скрыть заголовок, если тело узла пусто - Справка по Drupal php - PullRequest
1 голос
/ 07 мая 2010

Я сделал тип контента для ссылок, я пытаюсь создать каталог ссылок. Люди должны только предоставить ссылку, описание является добровольным. Если описание не введено, я хочу, чтобы заголовок с надписью «описание» исчез. Поле описания - это тело узла. Прямо сейчас мой фрагмент выглядит так

<?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 }?>

Я ожидаю, что это проверит, не является ли тело узла пустым, и если нет, оно напечатает, что там. Проблема в том, что заголовок Description все еще распечатывается, даже если тело узла пусто. Кто-нибудь может увидеть, что не так?

Ответы [ 3 ]

3 голосов
/ 07 мая 2010

$ node-> body - это содержимое всего узла со ссылками, информацией об авторе, дате публикации и т. Д.Вы почти получили его, смотрите:

<?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 }?>

Также некоторые модули wysiwyg-s автоматически добавляют теги вроде p.Проверь это ...

0 голосов
/ 11 февраля 2013

В Drupal 7 это также будет работать:

<?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 }?>
0 голосов
/ 07 мая 2010

$ node-> body, вероятно, не пусто

Это вещи, которые php считает пустыми

"" (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)

сделать для этого переменную var_dump

Для таких вещей был создан сокращенный синтаксис phps.Вы должны его использовать, его гораздо легче читать

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