我是新来的果园,所以我可能不知道我在做什么。你如何覆盖Orchard CMS中导航区域的渲染?
我已经想出了如何覆盖不同的形状,但将一个cshtml文件放在与文件形状相同的视图文件夹中。
另外,我在Core Orchard文件下找到Menu和MenuItem形状cshtml文件。
但是,我没有看到一个名为Navigation的形状,我并不真正了解Zones的工作方式。
我搜索了代码,无法弄清楚导航是如何渲染的,尽管我找到了一些代码。
我想重写导航渲染的原因是它在UL周围呈现DIV和NAV标签。我宁愿只渲染NAV和UL。
谢谢。这很有效,但我不知道如何使用导航数据呈现菜单形状,或者如何访问导航数据以便自己构建菜单。调用@Display(Model.Menu)不起作用。 – Zack 2011-05-30 00:54:29
* Menu *(呈现'nav'元素)和* MenuItem *(呈现单个项目)是形状,因此您可以通过将* Menu.cshtml *和/或* MenuItem.cshtml *文件放入您的主题* /查看*文件夹。看看默认的渲染方式 - 你可以在* Core/Shapes/Views *文件夹中找到它们。顺便说一句 - @Display()方法用于渲染一个形状对象(应该提供这样的对象)。如果您需要手动渲染区域内容 - 将模型(保存当前区域形状对象)投射到IEnumerable并为每个项目调用显示(项目)。 –
2011-05-30 02:42:00
澄清:每个形状对象(可在.cshtml文件中作为Model属性提供)实现一个IEnumerable接口,并且可以包含其他子形状(例如,导航区域中的菜单形状)。这就是为什么你可以自由地将它转换为IEnumerable并在foreach循环中访问子项(如果有的话)。 –
2011-05-30 02:48:46