2012-05-08 43 views
1

這是我的原則Sitecore規則不會將數據源設置爲其他項目?

其中用戶配置文件fb_likes字段包含Sitecore的

組數據源TestItem2

我申請這個規則對模板的標準值的sublayout,但這個規則永遠不會改變數據源。

我自己也嘗試這個條件

其中true(操作始終執行)。

但同樣沒有運氣,

如果我改變行動

隱藏渲染

它工作正常。
我在做什麼錯在這裏?

回答

1

你的sublayout的代碼在上下文項目上設置時是否允許使用數據源?您可以通過多種方式實現此目的。 E.g在基類:

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; 
     } 
    } 

內。然後你對你的sublayout代碼使用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); 
     } 
    } 

使用這一切你sublayouts,在它們的基類將會原生支持的數據源,即使代碼是針對上下文項書面繼承這一點。

相關問題