Kentico 10基于另一个webpart控制webpart的可见性

时间:2017-08-02 01:43:12

标签: kentico

我在页面上有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");

3 个答案:

答案 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上确保不会被覆盖。

在这个阶段,我只是要删除默认文本,因为感觉我正在与系统作战,获得的价值可能不值得努力/定制。