我有一个自定义的主题果园网站 - 我是Orchard的新手。
所有网页都有与主要导航和页脚相同的标题。我已设置标题&作为区域的页脚。
有4个主要部分,2个左侧需要第二个导航;信息&常见问题。
我想为CMS中的这些部分动态创建页面 - 并将页面添加到相应的第二个导航菜单,然后单击导航到该页面(在左侧显示正确的导航菜单 - 使用正确的样式对于页面的其余部分)。
在简单的步骤中,最好的方法是什么 - 它是否需要我在Visual Studio中编辑布局或其他文件(如果需要,我可以)。
我在网上发现了几篇文章 - 但它们都适用于已完成的主题,而不是从头开始创建。
(我在小部件页面上也没有这个网站的“地图” - 我应该如何/应该以某种方式创建一个?):
感谢。
答案 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
转换为可放置在您想要的任何区域的小部件。
将您的小部件添加到区域,从仪表板导航到小部件。
然后选择要将窗口小部件放入的区域:
然后选择您的小部件
并最终选择将在其中显示窗口小部件的图层。图层是一组规则,用于确定窗口小部件将显示在哪些页面中。例如,选择homepage
将仅在主页中显示窗口小部件,选择default
将在所有页面中显示您的小部件,依此类推。定义您自己的规则检查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,......你是什么可以在迁移文件中创建数据库表,创建N
,ContentTypes
,ContentParts
等等。已经有几个模块与orchard一起提供,检查它们并获得想法。< / p>