我在页面上有2个可编辑的文本Web部件。一个Web部件上设置了默认文本,因为大部分时间它都是相同的文本。
我想根据实际网站的其他网页部分的文字设置此网页部件的可见性。
我试过了:
{#!string.IsNullOrEmpty(WebPart.GetValue("AreaDescription", "Content")) &&
CMS.PortalEngine.ViewModeEnum.LiveSite == CMS.PortalEngine.PortalContext.ViewMode #}
但是它永远不可见,所以它没有成功地获取其他webpart内的文本。所以我想也许我需要调用GetContent()来获取用户提供的可编辑区域的文本。我尝试编写自定义转换方法,但使用下面的内容 - PagePlaceholder是未知的,我不知道如何获取它的引用。
CMSAbstractWebPart webpart = PagePlaceholder.FindWebPart("webPartId");
答案 0 :(得分:1)
尝试{%(ViewMode ==“LiveSite”)&& (CMSContext.CurrentDocument.WebPartID!=“”)#%}
答案 1 :(得分:1)
在宏中获取可编辑文本的内容:
<clr-icon shape="info" size="48"></clr-icon>
所以你要找的是这样的:
{%CurrentDocument.DocumentContent["webPartId"]#%}
答案 2 :(得分:0)
从Kentico支持 - 宏不允许我做我想要实现的目标,因为CMSContext或DocumentContent中没有其他Web部件的内容。
当我试图避免自定义Web部件时,他们建议我可以为我的Web部件创建一个替代布局,它与默认加上相同:
你的onLoad处理程序,或任何更好的事件如果是自定义Web部件,我可以添加:
///find another web part - in this case WebPart1
CMSAbstractWebPart webpart1 = PagePlaceholder.FindWebPart("WebPart1");
///store value/content of chosen property
string wp1DefaultText = ValidationHelper.GetString(webpart1.GetValue("DefaultText"), "");
可能在Prerender上确保不会被覆盖。
在这个阶段,我只是要删除默认文本,因为感觉我正在与系统作战,获得的价值可能不值得努力/定制。