2017-08-02 52 views
3

在10月份的CMS中,我想知道是否有方法檢查內容塊是否爲空?如果在10月份的內容塊的語句CMS

我將它放在消息標記中,如果該塊未填充,我不希望顯示它。

喜歡的東西:

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

回答

0

這不回答你的實際問題
但確實,我相信,解決你的問題。

我的理解是,您希望在空的時候刪除整個<div>塊,,當內容塊爲空時。

鑑於簡單

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

這在html /樹枝代碼可以使用jQuery來完成。

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

$('div.message'):與「消息」類
$('div.message').text()找到<div>塊:以包圍文本的副本(刪除所有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 /枝是所有一行...

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