我最近刚开始使用Umbraco,发现它与术语有点混淆——我已经成功地创建了页面并创建了用于插入的模板,如页脚和导航。然而,我希望实现的是添加一个自定义部分,最终用户可以在一个页面上多次添加,其中包括背景色、标题、段落、图像、图像对齐和文本对齐等参数。
我一直在阅读宏之类的东西,并试图查看youtube视频,但似乎没有找到任何能给我实现这一点的正确方向。我认为宏是正确的方法。我只需要让非开发人员能够简单地加入并添加/删除/编辑一个部分。我也希望这种方法在多个页面上也是可行的。
Umbraco中有许多可重复部分的选项。主要的内置式是网格。网格允许你创建和配置可以在页面上使用的相关块,比如标题块、图像块等。它使用引导标记,但如果你愿意,你可以更改它。有关网格的更多详细信息,请点击此处: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这与嵌套内容类似,因为你必须编写自己的视图等。
如果您只想在每个页面使用的"模板"上更改一些内容,我建议您使用主模板。这允许您从基文件继承属性,并在子模板中添加您自己的属性以覆盖基文件。请注意,您可以在一个网站上拥有多个主模板。例如,我有一些页面不想在上面显示横幅,所以我为这些页面使用了第二个主模板。
然而,使用主模板的缺点是,管理员需要访问Templates
(在Settings
部分下)才能进行更改。
如果您希望允许管理员选择页面上包含的"部分",那么您正在寻找多节点Treepicker。这允许您从Content
部分选择页面上显示的节点(管理员可以更安全地修改)。注意,它说它已经过时了,但在Umbraco 7中仍然可用(以及我个人正在使用的)。
多节点树选择器可以选择在特定情况下显示的单个节点,也可以由管理员在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>
}
}
希望这能有所帮助!:)