Content management system 我是否可以创建可定制的菜单';他在翁布拉科

Content management system 我是否可以创建可定制的菜单';他在翁布拉科,content-management-system,umbraco,Content Management System,Umbraco,我正在尝试在umbraco中创建可自定义的菜单。i、 e.用户应能够添加/删除/编辑菜单中的任何菜单项。(用户将不是开发人员) 但是我不知道怎么做。我听说过宏,但对它们不太了解,所以不能使用它 我想这以前也做过 提前感谢通常,您的菜单将反映您在umbraco中的节点结构。这是允许客户控制站点导航的最简单方法。如果菜单中有您不希望的节点,则可以使用文档类型的属性 尝试一些可用的初学者工具包。它们将附带基于节点构建导航的宏,并让您了解它们的工作方式。您甚至可以从使用初学者工具包开始,然后根据需要对其

我正在尝试在umbraco中创建可自定义的菜单。i、 e.用户应能够添加/删除/编辑菜单中的任何菜单项。(用户将不是开发人员)

但是我不知道怎么做。我听说过宏,但对它们不太了解,所以不能使用它

我想这以前也做过


提前感谢

通常,您的菜单将反映您在umbraco中的节点结构。这是允许客户控制站点导航的最简单方法。如果菜单中有您不希望的节点,则可以使用文档类型的属性

尝试一些可用的初学者工具包。它们将附带基于节点构建导航的宏,并让您了解它们的工作方式。您甚至可以从使用初学者工具包开始,然后根据需要对其进行修改。这就是我建议你从翁布拉科开始的建议。Umbraco大约有4个内置初学者工具包,我们的Umbraco有其他用户提供的

使用随Umbraco提供的默认导航模板:

如果您登录到Umbraco backoffice并转到开发人员部分,应该会看到脚本文件。右键单击脚本文件并选择创建。选择文件名,如Nav,然后从“选择模板”菜单中选择站点地图,然后单击创建。您应该得到以下代码:

@*
SITEMAP
=================================
This snippet generates a complete sitemap of all pages that are published and visible (it'll filter out any
pages with a property named "umbracoNaviHide" that's set to 'true'). It's also a great example on how to make
helper methods in Razor and how to pass values to your '.Where' filters.

How to Customize for re-use (only applies to Macros, not if you insert this snippet directly in a template):
- If you add a Macro Parameter with the alias of "MaxLevelForSitemap" which specifies how deep in the hierarchy to traverse

How it works:
- The first line (var maxLevelForSitemap) assigns default values if none is specified via Macro Parameters
- Next is a helper method 'traverse' which uses recursion to keep making new lists for each level in the sitemap
- Inside the the 'traverse' method there's an example of using a 'Dictionary' to pass the 'maxLevelForSitemap' to
  the .Where filter
- Finally the 'traverse' method is called taking the very top node of the website by calling AncesterOrSelf()

NOTE: It is safe to remove this comment (anything between @ * * @), the code that generates the list is only the below!
*@

@inherits umbraco.MacroEngines.DynamicNodeContext

@helper traverse(dynamic node){
var maxLevelForSitemap = String.IsNullOrEmpty(Parameter.MaxLevelForSitemap) ? 4 : int.Parse(Parameter.MaxLevelForSitemap);

var values = new Dictionary<string,object>();
values.Add("maxLevelForSitemap", maxLevelForSitemap) ;

   var items = node.Children.Where("Visible").Where("Level <= maxLevelForSitemap", values);
   if (items.Count() > 0) {
   <ul>
            @foreach (var item in items) {
                <li>
          <a href="@item.Url">@item.Name</a>
          @traverse(item)
                </li>
            }
   </ul>
    }
}
<div class="sitemap">
    @traverse(@Model.AncestorOrSelf())
</div>
@*
网站地图
=================================
此代码段生成所有已发布和可见页面的完整站点地图(它将过滤掉任何页面)
具有名为“umbracoNaviHide”且设置为“true”的属性的页面。这也是一个很好的例子,说明如何
Razor中的helper方法以及如何将值传递给“.Where”过滤器。
如何自定义以重复使用(仅适用于宏,如果直接在模板中插入此代码段则不适用):
-如果添加别名为“MaxLevelForItemAP”的宏参数,该参数指定要遍历的层次结构的深度
工作原理:
-如果通过宏参数未指定任何值,则第一行(var maxLevelForSitemap)将指定默认值
-接下来是一个助手方法“遍历”,它使用递归为站点地图中的每个级别不断创建新列表
-在“traverse”方法中,有一个使用“Dictionary”将“MaxLevelForItemAP”传递给的示例
过滤器在哪里
-最后,调用“traverse”方法,通过调用antesetrorself()获取网站的最顶端节点
注意:删除此注释(介于@**@)是安全的,生成列表的代码仅在下面!
*@
@继承umbraco.MacroEngines.dynamicontext
@辅助导线测量(动态节点){
var maxLevelForSitemap=String.IsNullOrEmpty(Parameter.maxLevelForSitemap)?4:int.Parse(Parameter.maxLevelForSitemap);
var值=新字典();
添加(“MaxLevelForItemAP”,MaxLevelForItemAP);

var items=node.Children.Where(“可见”).Where(“Level查看XSLT或Razor的默认顶部导航模板。这应该让您了解从何处开始以及在Umbraco中导航通常如何工作。我支持Douglas的回答,即导航通常反映内容部分中的内容结构


如果你真的想要一个独立于内容树结构向nav添加项目的设置,那么在主页上使用多节点树选择器,并将其作为顶部nav宏中的导航。

这不是一个真正的问题。到目前为止你尝试了什么?嗨,道格拉斯,谢谢你的建议。但我要找的是..一个现成的通过宏或任何其他方式实现多级菜单..啊,那么你想要一个代码示例吗?好的,我已经更新了我的答案。哦!我通过宏实现了这个功能…这很简单..但仅仅因为我不知道它是如何工作的,我就结巴了。Umbraco提供了许多随时可用的功能..很好。再次感谢你。这非常有用。Umbraco是一个完整的与Joomla等CMSE截然不同的范例——你所期待看到的东西根本不在翁布拉科。