如果在10月CMS中使用Content阻止语句

时间:2017-08-02 15:56:36

标签: octobercms

在10月的CMS中,我想知道是否有办法检查内容块是否为空?

我将其封在一个消息标记中,如果该块没有填充,我不希望显示该标记。

类似的东西:

{% if not empty content 'homepage/message' %}
      <div class="ui message positive home-messages">
          {% content 'homepage/message' %}
        </div>
{% endif %}

1 个答案:

答案 0 :(得分:0)

这不符合您实际的问题
但我相信它能解决你的问题。

我的理解是,当内容块为空时,您希望删除整个<div>块,

给出简单的

的html / twig代码
<div class="ui message positive home-messages">
    {% content 'homepage/message' %}
</div>

这可以使用jQuery完成。

$(document).ready(function() {
    if ( $.trim( $('div.message').text() ).length == 0 ) {
        $('div.message').remove();
    }
});

$('div.message'):找到带有“消息”类的<div>$('div.message').text():获取随附的文本的副本(删除所有html标记)
$.trim( $('div.message').text() ):修剪所有空格,包括回车和不间断空格(&nbsp;
$.trim( $('div.message').text() ).length:测量左边的长度 如果它为零,则<div>块为空(没有文本或空子html块),所以
$('div.message').remove();:删除整个<div>

如果您需要指定多个类以避免使用message类删除其他空div块,则可以对类进行链接,
例如$('div.message.home-messages')

您可以将jQuery代码保存到/themes/<theme>/assets/javascript/remove_empty.js
然后使用

将其注入相关页面
function onEnd() {
    $this->addJs('assets/javascript/remove_empty.js');
} 

您可以将remove_empty.js添加到布局文件底部的JavaScript资源列表中,以便在整个网站上使用。如上所述,注入它意味着它只会伴随该页面。

你可以使用更简单的

$(document).ready(function() {
    $('div.message:empty').remove();
}); 

但这需要你的html / twig全部一行......

<div class="ui message positive home-messages">{% content 'homepage/message' %}</div>

...否则<div>块将包含回车符(空格),因此不会是:empty

另见:
* Using an if statement to check if a div is empty
* How do I remove empty elements from the dom using jQuery?