在10月的CMS中,我想知道是否有办法检查内容块是否为空?
我将其封在一个消息标记中,如果该块没有填充,我不希望显示该标记。
类似的东西:
{% if not empty content 'homepage/message' %}
<div class="ui message positive home-messages">
{% content 'homepage/message' %}
</div>
{% endif %}
答案 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() )
:修剪所有空格,包括回车和不间断空格(
)
$.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?