Orchard自定义主题 - 创建2个额外的导航菜单,仅在某些页面上可见

时间:2013-07-25 14:31:33

标签: orchardcms orchardcms-1.6

我有一个自定义的主题果园网站 - 我是Orchard的新手。

所有网页都有与主要导航和页脚相同的标题。我已设置标题&作为区域的页脚。

有4个主要部分,2个左侧需要第二个导航;信息&常见问题。

我想为CMS中的这些部分动态创建页面 - 并将页面添加到相应的第二个导航菜单,然后单击导航到该页面(在左侧显示正确的导航菜单 - 使用正确的样式对于页面的其余部分)。

在简单的步骤中,最好的方法是什么 - 它是否需要我在Visual Studio中编辑布局或其他文件(如果需要,我可以)。

我在网上发现了几篇文章 - 但它们都适用于已完成的主题,而不是从头开始创建。

(我在小部件页面上也没有这个网站的“地图” - 我应该如何/应该以某种方式创建一个?): site map on widgets page

感谢。

1 个答案:

答案 0 :(得分:3)

据我了解你所创造的Widget。基本上,为了显示页面中的任何内容,您必须创建适当的ContentType并附加所需的部分,并显示它,您必须在浏览器的地址栏中输入该内容的url或单击链接内容,在任何一种情况下,它将导航到新页面并显示[Content] Zone内的内容。但是如果你想在一个特殊的Zone和特殊页面中显示内容,那么创建一个Widget就可以了。要创建一个小部件,唯一需要的是添加一个WidgetPart它可以为它提供“Widget”的刻板印象。你可以通过在Migration文件中对你想要的ContentType进行以下更改来实现这一点:

ContentDefinitionManager.AlterTypeDefinition("MyType", cfg => cfg
                .WithPart("WidgetPart")
                .WithPart("CommonPart")
                .WithSetting("Stereotype", "Widget"));

这会将您的Content Type转换为可放置在您想要的任何区域的小部件。

将您的小部件添加到区域,从仪表板导航到小部件。

enter image description here

然后选择要将窗口小部件放入的区域:

enter image description here

然后选择您的小部件

enter image description here

并最终选择将在其中显示窗口小部件的图层。图层是一组规则,用于确定窗口小部件将显示在哪些页面中。例如,选择homepage将仅在主页中显示窗口小部件,选择default将在所有页面中显示您的小部件,依此类推。定义您自己的规则检查here

enter image description here

修改:

在您的主题中创建新的zone,只需在Zone文件中包含theme.txt名称,然后打开Layout.cshtml(一个位于您自定义主题的视图目录中),做以下事情:

如果您的区域名称为SecondaryNavigation,请在主题中添加以下代码

@if (Model.SecondaryNavigation != null)
{
    <div id="secondary-navigation" class="group">
        <div class="inner">
            @Zone(Model.SecondaryNavigation)
        </div>
    </div>
}

这样,一个额外的Zone将显示在区域列表中,然后您可以将您的小部件放在新创建的zone内。并且关于您询问的图片。它是一个创建的图像文件通过主题的作者并命名为“Theme.png”并将在管理小部件屏幕中显示为预览,您可以为自己的主题创建它并将其放在主题视图目录中。

编辑2

迁移文件本身并不重要。唯一重要的是定义一个从DataMigrationImpl驱动的类,orchar会选择你的迁移文件并自动运行它,迁移文件首先是{{1返回1的方法,对于每个进一步的更新,你必须定义一个名为Create的方法,其中UpdateFromN是你的模块所在的当前版本,它将返回2,3,......你是什么可以在迁移文件中创建数据库表,创建NContentTypesContentParts等等。已经有几个模块与orchard一起提供,检查它们并获得想法。< / p>