如何创建可重复的内容部分

How to create repeatable content sections

我最近才开始使用 Umbraco,发现它的术语有点混乱 - 我已经设法创建页面并创建模板以引入页脚和导航等内容。然而,我想要实现的是添加一个自定义部分,最终用户可以在一页上多次添加该部分,其中包括 background-color、标题、段落、图像、图像对齐和文本对齐等参数。

我一直在阅读 macro 之类的东西,并尝试查看 youtube 视频,但似乎没有找到任何可以给我正确实施此方法的方向。我假设宏是正确的方法。我只需要它很简单,non-developer 就可以进入并能够 add/remove/edit 一个部分。我也希望这种方法也可以在多个页面上实现。

如果您只想在每个页面都会使用的 'template' 之上更改一些内容,我建议您使用 Master Template。这允许您从基础文件继承属性,并在将覆盖基础文件的子模板中添加您自己的属性。请注意,您可以在一个站点上拥有多个主模板。例如,我不想在某些页面上显示横幅,因此我为这些页面使用了第二个主模板。

但是,使用主模板的缺点是管理员需要访问 Templates(在 Settings 部分下)才能进行更改。

如果您希望允许管理员选择页面中包含哪些 'partials',则需要 Multinode Treepicker。这允许您选择在页面上显示哪些节点,直接从 Content 部分(这对管理员修改来说更安全)。请注意,它说它已过时,但在 Umbraco 7 中仍然可用(以及我个人正在使用的)。

多节点树选择器可以 select 在某些情况下显示单个节点,或者循环遍历管理员在 Content 部分中选择的所有节点。

这可以通过键入:

来完成
@{
    var typedMultiNodeTreePicker = Model.Content.GetPropertyValue<IEnumerable<IPublishedContent>>("banner");
    foreach (var item in typedMultiNodeTreePicker)
    {
        <p>@item.Name</p>
    }
}

动态:

@{
    var bannerList = CurrentPage.banner.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
    var bannerCollection = Umbraco.Content(bannerList);
    foreach (var item in bannerCollection)
    {
        <p>@item.Name</p>
    }
}

希望对您有所帮助! :)

Umbraco 中有许多可重复部分的选项。主要内置的是网格。网格允许您创建和配置可在页面上使用的相关块,例如标题块、图像块等。开箱即用,它使用 bootstrap 标记,但您可以根据需要更改它.有关网格的更多详细信息:https://our.umbraco.org/documentation/getting-started/backoffice/property-editors/built-in-property-editors/grid-layout

接下来是插件选项。您所追求的两个主要内容是嵌套内容(现在是 Umbraco 后期版本核心的一部分):https://our.umbraco.org/projects/backoffice-extensions/nested-content/ 这有点像网格,除了您创建 DocTypes 来表示您的内容块,您必须从头开始编写自己的视图模板。

与嵌套内容类似,但也略有不同的是堆叠内容:https://github.com/umco/umbraco-stacked-content这与嵌套内容相似,因为您必须编写自己的视图等。