0

TL;DR如何按节点 ID 呈现内容项。

我正在使用 Umbraco 的 Widget Grid 管理扩展来配置内容可管理的小部件区域,但我一直在尝试渲染配置的小部件。

我有一个要在页面上呈现的节点 ID 列表,但我可以在我的一生中弄清楚如何做到这一点。

非常感谢任何指导!谢谢。

更新

模型属性中包含的 XML

<WidgetGrid> 
    <col1> <nodeId>4839</nodeId> <nodeId>4844</nodeId> <nodeId>4845</nodeId> </col1>
</WidgetGrid>

一旦我进入 col1,它似乎不再属于 DynamicXml 类型,而是将其作为字符串吐出......不知道。

4

1 回答 1

1

大概您是从宏中执行此操作的,并且我假设您设置了一个多节点选择器来将 Id 值存储为 CSV:

@{
    string[] widgetIds = ((string)Model.Widgets).Split(',');

    foreach (var id in widgetIds)
    {
        var widget = Model.NodeById(id);

        @RenderPage("~/macroscripts/widgets/" + widget.NodeTypeAlias
                         + ".cshtml", widget);
    }
}

这将允许您在多节点选择器中选择不同类型的小部件,并为每个小部件提供不同的视图。

这也使用了动态方法,但您可以通过将第一行替换为:

string[] podIds = CurrentModel.GetProperty<string>("widgets").Split(',');

鉴于该属性存储为 XML,您可以使用本文所述的符号 ( http://umbraco.com/follow-us/blog-archive/2011/2/28/umbraco-razor-feature-walkthrough- %E2%80%93-第 3 部分):

foreach (var id in Model.widgets.col1[0].nodeId)
{
    ...
}
于 2013-10-09T13:49:32.017 回答