这是我的规则
其中用户个人资料 fb_likes 字段包含 sitecore
将数据源设置为 TestItem2
我已将此规则应用于模板标准值的子布局,但此规则永远不会更改数据源。
我也试过这种情况
其中为真(动作总是执行)。
但再次没有运气,
如果我将动作更改为
隐藏渲染
它工作正常。
我在这里做错了什么?
当您的子布局代码设置在上下文项上时,是否允许使用数据源?您可以通过多种方式实现这一目标。例如在基类中:
    protected string DataSource
    {
        get
        {
            var sublayout = Parent as SublayoutBase;
            return sublayout == null ? string.Empty : sublayout.DataSource;
        }
    }
    protected Item DataSourceItem
    {
        get
        {
            return string.IsNullOrEmpty(DataSource)
                       ? Sitecore.Context.Item
                       : Sitecore.Context.Database.GetItem(DataSource) ?? Sitecore.Context.Item;
        }
    }
然后在您的子布局代码中使用 DatSourceItem 而不是上下文项来显示内容。我看到的另一种方法是:
    protected override void Render(HtmlTextWriter writer)
    {
        if (this.DataSourceItem != null)
            using (new Sitecore.Data.Items.ContextItemSwitcher(this.DataSourceItem ))
            {
                base.Render(writer);
            }
        else
        {
            base.Render(writer);
        }
    }
即使代码是针对 Context 项编写的,使用它在其基类中继承它的所有子布局都将本机支持数据源。