【问题标题】:Sitecore rule does not set the data source to other item?Sitecore 规则未将数据源设置为其他项目?
【发布时间】:2012-05-08 11:57:11
【问题描述】:

这是我的规则

用户个人资料 fb_likes 字段包含站点核心的位置

将数据源设置为TestItem2

我已将此规则应用于模板标准值的子布局,但此规则永远不会更改数据源。

我也试过这种情况

其中为真(动作总是执行)。

但还是没有运气,

如果我将操作更改为

隐藏渲染

效果很好。
我在这里做错了什么??

【问题讨论】:

    标签: sitecore sitecore6


    【解决方案1】:

    您的子布局代码是否允许在将数据源设置在上下文项上时使用它?您可以通过多种方式实现这一目标。例如在基类中:

        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 项编写的,在其基类中继承 this 的所有子布局都使用它本机支持数据源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2015-06-09
      • 1970-01-01
      • 2016-08-24
      相关资源
      最近更新 更多