Sitecore:知道当前子布局所在的占位符?

时间:2013-11-12 19:54:18

标签: sitecore

有没有办法通过代码了解子布局所在的占位符?

场景:如果它位于占位符B而不是占位符A,我希望子布局看起来有点不同。我可以使用子布局参数执行此操作,但我试图使其成为一个作者不必设置一个值,而sublayout只是足够聪明,可以知道它正在使用的上下文。

2 个答案:

答案 0 :(得分:7)

你可以用规则引擎做一些聪明的事情,这可能就是我要解决的问题 - 可能使用基于占位符的规则引擎更改渲染参数,然后根据它在代码中执行某些操作......

但您可以从代码中执行以下操作:

Sublayout sublayout = this.Parent as Sublayout;
if (sublayout != null)
{
    Placeholder placeholder = sublayout.Parent as Placeholder;
    if (placeholder != null)
    {
        // name of the container placeholder
        string placeHolderKey = placeholder.Key;
        // full path of nested placeholders
        string placeHolderContextKey = placeholder.ContextKey;
    }
}

答案 1 :(得分:3)

正如@jammykam所说,我也鼓励您使用Rules Engine来实现解决方案。 为此,我将指出您在Stackoverflow上answer的方向similar question(我认为)

这可以让您深入了解其他用户所面临的类似场景。

最后,我们鼓励您阅读TrayekblogChanging placeholders with Rules帖子

希望上述内容有所帮助,并为您提供所需的解决方案。