Kentico 10 基于另一个 webpart 控制 webpart 的可见性
Kentico 10 Controlling visibility of webpart based on another webpart
我在一个页面上有 2 个可编辑的文本 Web 部件。一个 Web 部件上设置了默认文本,因为大多数情况下它都是相同的文本。
我想根据实时网站的另一个 Web 部件的文本设置此 Web 部件的可见性。
我试过这个:
{#!string.IsNullOrEmpty(WebPart.GetValue("AreaDescription", "Content")) &&
CMS.PortalEngine.ViewModeEnum.LiveSite == CMS.PortalEngine.PortalContext.ViewMode #}
但是它永远不可见,所以它没有成功地在另一个 Web 部件中获取文本。所以我想也许我需要调用 GetContent() 来获取用户提供的可编辑区域文本。我尝试编写自定义转换方法,但使用以下方法 - PagePlaceholder 未知,我不确定如何获取对它的引用。
CMSAbstractWebPart webpart = PagePlaceholder.FindWebPart("webPartId");
试试{% (ViewMode == "LiveSite") && (CMSContext.CurrentDocument.WebPartID != "") #%}
在宏中获取可编辑文本的内容:
{%CurrentDocument.DocumentContent["webPartId"]#%}
所以你要找的是这样的:
{%!string.IsNullOrEmpty(CurrentDocument.DocumentContent["AreaDescription"]) && (PortalContext.ViewMode == "LiveSite")#%}
来自 Kentico 支持 - 宏不允许我执行我想要实现的操作,因为其他 Web 部件的内容在 CMSContext 或 DocumentContent 中不可用。
由于我试图避免自定义 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 上以确保它不会被覆盖。
在这个阶段,我将删除默认文本,因为感觉就像我在与系统作斗争,获得的价值可能不值得 effort/customisation。
我在一个页面上有 2 个可编辑的文本 Web 部件。一个 Web 部件上设置了默认文本,因为大多数情况下它都是相同的文本。
我想根据实时网站的另一个 Web 部件的文本设置此 Web 部件的可见性。
我试过这个:
{#!string.IsNullOrEmpty(WebPart.GetValue("AreaDescription", "Content")) &&
CMS.PortalEngine.ViewModeEnum.LiveSite == CMS.PortalEngine.PortalContext.ViewMode #}
但是它永远不可见,所以它没有成功地在另一个 Web 部件中获取文本。所以我想也许我需要调用 GetContent() 来获取用户提供的可编辑区域文本。我尝试编写自定义转换方法,但使用以下方法 - PagePlaceholder 未知,我不确定如何获取对它的引用。
CMSAbstractWebPart webpart = PagePlaceholder.FindWebPart("webPartId");
试试{% (ViewMode == "LiveSite") && (CMSContext.CurrentDocument.WebPartID != "") #%}
在宏中获取可编辑文本的内容:
{%CurrentDocument.DocumentContent["webPartId"]#%}
所以你要找的是这样的:
{%!string.IsNullOrEmpty(CurrentDocument.DocumentContent["AreaDescription"]) && (PortalContext.ViewMode == "LiveSite")#%}
来自 Kentico 支持 - 宏不允许我执行我想要实现的操作,因为其他 Web 部件的内容在 CMSContext 或 DocumentContent 中不可用。
由于我试图避免自定义 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 上以确保它不会被覆盖。
在这个阶段,我将删除默认文本,因为感觉就像我在与系统作斗争,获得的价值可能不值得 effort/customisation。