Sitecore获取占位符数

时间:2016-05-06 13:01:18

标签: c# sitecore sitecore8

是否有可能获取具有指定名称的页面中占位符的数量。例如,我在页面中有my-placeholder1,my-placeholder2,my-placeholder3,我需要知道我有3个占位符,其名称中包含my-placeholder。

2 个答案:

答案 0 :(得分:1)

您可以使用:

        var placeholderName = "my-placeholder";
        var renderingReferences = Sitecore.Context.Item.Visualization.GetRenderings(Sitecore.Context.Device, true);
        var renderingsInPlaceholder = renderingReferences.Where(r => r.Placeholder.StartsWith(placeholderName, StringComparison.OrdinalIgnoreCase));
        var numberOfRenderingsInPlaceholder = renderingsInPlaceholder.Count();

如果您在这些占位符上有一个组件,则此代码正常工作。所以它会计算占位符上有一个组件。

更新如果占位符上有多个组件,则会计算组件数。

答案 1 :(得分:0)

没有。没有办法获得占位符的数量。

Sitecore动态生成页面。它可以为User AUser B生成完全不同的输出。

my-placeholder2可以位于为一个用户隐藏并为另一个用户显示的渲染中。

这就是为什么你根本无法分辨出在最后一页中有多少具有特定键的占位符。

你可以尝试做什么(在我看来是 reaaaaaaaly evil )是为了获得分配给页面的布局,获得所有渲染,并为所有这些渲染得到他们的{{1} }或cshtml + aspx文件,并使用一些正则表达式(html的另一个坏处)来计算具有特定键的占位符。

但是再次 - 你永远不能100%确定这是将在渲染页面上使用的数字。