2010-05-06 56 views
1

我爲鏈接創建了一個內容類型,我試圖創建一個鏈接目錄。人們只需提交鏈接,描述是自願的。如果沒有輸入描述,我想讓「description」標題消失。描述字段是節點主體。 現在我的片段看起來像這樣如果節點主體爲空,則隱藏標題 - 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 }?> 

我預計這將檢查是否節點的身體是不是空的,如果不是,它會打印那裏的東西。問題在於,即使節點主體爲空,描述標題仍然打印出來。任何人都可以看到有什麼不對?

回答

3

$節點 - >體是整個節點內容的鏈接,作者信息,發佈日期等
你幾乎得到了它,請參閱:

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

完美!我幾乎在那裏,我實際上試過$ node-> content ['body'],但沒有最後一個值標記。您的代碼段完全符合我的預期。謝謝! – Toxid 2010-05-06 22:36:35

0

$節點 - >體可能不是空

這些東西,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它來測試它

而且PHP的語法速記是爲了那樣的事情而製作的。你shoudl使用它,它更容易閱讀

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

我不是PHP的好,但我會考慮做什麼的foreach。謝謝! – Toxid 2010-05-06 22:38:28

+0

我的意思是把簡寫爲if語句 – Galen 2010-05-06 22:59:17

+0

啊,我明白了,而不是我使用的{}括號:和endif ;.你是對的,它看起來好多了! – Toxid 2010-05-07 17:35:17

0

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