我在页面模板上有一个可编辑的文本Web部件。它在文本之前和之后都有一个自定义HTML信封。如果可编辑文本为空,如何隐藏整个内容,包括信封?
我需要隐藏它,因为信封添加了没有文本时不应该看到的风格化标记。
可以在Visible属性上使用K#片段吗?我不清楚如何审问文件的财产。
谢谢!
答案 0 :(得分:3)
尝试将此作为“可见”属性:
{% (ViewMode != "LiveSite") || (CMSContext.CurrentDocument.editabletext != "") #%}
将“editabletext
”更改为您的Web部件控件ID。
答案 1 :(得分:0)
我对Kentico不熟悉,但这些解决方案可能有所帮助。他们可能没有具体解决您的问题,但可能有助于解决方案。
CMSEditableImage扩展方法
我想出了一种检查方法,我添加了一个扩展方法 获取CurrentPage PageInfo对象的CMSEditableImage类 要检查可编辑区域的值,不知道这是不是 最好的方式与否,但这是代码。
public static bool IsPopulated(this CMSEditableImage editableImage, PageInfo currentPage) { bool isPopulated = false; string value = currentPage.EditableItems.EditableRegions[editableImage.ID.ToLower()].ToString(); if (!string.IsNullOrEmpty(value)) { value = value.ToUpper(); isPopulated = (value == "<IMAGE><PROPERTY NAME=\"IMAGEPATH\"></PROPERTY></IMAGE>") ? false : true; } return isPopulated; }
通过http://devnet.kentico.com/Forums/f19/fp5/t4454/Empty-CMSEditableImage.aspx
JavaScript方法
webcontainer需要一个id,例如:
<h2 id="webpart-header">Headline</h2>
然后我有一个小的javascript函数附加在 外部js文件:
/* Hide Webcontainer via javascript if empty*/ function hideLayer(element) { elem = document.getElementById( element ); elem.style.display = "none"; }
现在在wep部件配置中,在没有数据行为的情况下,取消选中该复选框并通过输入以下命令调用js函数 找不到记录文本中的脚本:hideLayer(“webpart-header”);
其中webpart-header是容器的id名称。你可以 这里也有一个更复杂的
<div>
结构。
通过http://devnet.kentico.com/Forums/f22/fp3/t4180/Webcontainer-and-hide-if-no-data.aspx