Sitecore的。从占位符中读取项目

时间:2016-07-27 07:49:45

标签: sitecore sitecore8 sitecore-mvc

我有包含占位符和列表的页面。我希望能够根据占位符中的项目填充列表中的信息。例如:

我有"人"带有名称和图像字段的模板。我根据该模板创建了一些项目(人物A,B和C)。添加带有这些项目的渲染作为源后,我在占位符中显示图像。现在我想获取当前占位符中的所有项目,并将其名称字段写入列表(位于占位符之外)。

现在我只能在占位符之外获取渲染项目,但不能获取源项目。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

   /// <summary>
   /// Return all renderings to be rendered in a specific placeholder on the "default" device
   /// </summary>
   private IEnumerable<Sitecore.Data.Items.RenderingItem> GetRenderings(string placeholderKey, Sitecore.Data.Items.Item item)
   {
      Sitecore.Layouts.RenderingReference[] renderings = GetRenderingReferences(item, "default");
      foreach (var rendering in renderings)
      {
         if (rendering.Placeholder == placeholderKey)
         {
            yield return rendering.RenderingItem;
         }
       }
   }

答案 1 :(得分:1)

我能够通过我在RenderingItem的设置中找到的ID来获取源项目:

var ph = "my_placeholder";
var renderingReferences = Sitecore.Context.Item.Visualization.GetRenderings(Sitecore.Context.Device, true);
var renderingsInPlaceholder = renderingReferences.Where(r => r.Placeholder.EndsWith('/' + ph, StringComparison.OrdinalIgnoreCase));
var items = renderingsInPlaceholder.Select(x => context.GetItem(ID.Parse(x.Settings.DataSource)));