【问题标题】:Hide header if node body is empty - Drupal php snippet help如果节点主体为空,则隐藏标头 - Drupal php 片段帮助
【发布时间】:2013-02-12 03:50:42
【问题描述】:

我已经为链接创建了一个内容类型,我正在尝试创建一个链接目录。人们只需要提交链接,描述是自愿的。如果没有输入描述,我希望标有“描述”的标题消失。描述字段是节点主体。 现在我的 sn-p 是这样的

<?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 标头仍然会被打印出来。任何人都可以看到有什么问题吗?

【问题讨论】:

    标签: php drupal code-snippets


    【解决方案1】:

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

    还有一些所见即所得的模块会自动添加像 p 这样的标签。检查它...

    【讨论】:

    • 完美!我快到了,我实际上尝试了 $node->content['body'],但没有最后一个值标签。你的 sn-p 完全符合我的预期。谢谢!
    【解决方案2】:

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

    【讨论】:

    • 我还不太擅长 php,但我会研究一下 foreach 的作用。谢谢!
    • 我的意思是写 if 语句的简写
    • 啊,我明白了,我使用 : 和 endif; 而不是 { } 括号。你是对的,它看起来好多了!
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 2014-09-05
      • 2021-07-10
      相关资源
      最近更新 更多