我是Orchard的新手,我想在orchard中创建一个已经在ASP.NET MVC5中构建的网站主题。我是否需要将以前的Layout.cshtml页面中的标记复制到orchard themes / MyTheme / Views / Layout.cshtml页面或其他任何内容?
先谢谢了!!
答案 0 :(得分:4)
基本上,是的:将MVC5布局内容复制到Orchard主题的Layout.cshtml文件中。
但还有别的东西:你的源MVC5 Layout.cshtml文件可能包含<doctype>
,<head>
和<body>
元素之类的东西。
这些元素需要进入名为 Document.cshtml 的新文件(也在主题的Views文件夹中)。
最终结果是您的Document.cshtml文件包含外部HTML结构,包括<body>
元素,但<body>
元素的内容位于Layout.cshtml文件中。
虽然你不需要理解这一点,以便在开始时创建一个Orchard主题,但我发现,当你这样做时,它最终会让你变得更有效。所以这里是关于Orchard模板和形状的简要入门。
Orchard的模板引擎使用 shapes 层次结构,它们是动态对象。每个形状都使用形状模板(通常以Razor视图的形式)渲染。
每个页面的根是 Layout
形状,它由Layout.cshtml形状模板呈现。
形状可以包装&#39;包装。对于Layout形状,有一个名为Document
的包装器。这在实践中意味着在您的主题中,您可以拥有Document.cshtml文件和Layout.cshtml文件(如果您在主题中没有Document.cshtml文件,将使用默认文件)
Document.cshtml视图通常定义文档类型,<head>
元素和<body>
元素。 <Layout>
形状的内容将在<body>
元素中呈现。
因此,根据您在MVC5 Layout.cshtml文件中的内容,您可能需要也可能不需要在主题的Views文件夹中创建Document.cshtml文件。就个人而言,我通常这样做,以便在需要时轻松做出改变。
诸如页眉和页脚之类的东西通常会进入主题的Layout.cshtml文件中,因此您可以将它们从MVC5 Layout.cshtml文件中复制出来。
最终,您要更换&#34;硬编码&#34;包含来自CMS的内容的HTML。然后是时候开始将区域声明为Layout.cshtml文件了。
要定义区域,您需要做的就是将以下内容添加到Layout.cshtml:
@Display(Model.MyZoneName)
您可以根据需要随意使用任何区域名称(您不需要在其他任何地方定义它们;除非您在主题的清单文件(Theme.txt)中,否则您需要允许CMS用户将小部件添加到这些区域。)
Orchard知道有许多预先定义的区域。在Layout.cshtml文件中,最重要的是Content区域:
@Display(Model.Content)
“内容”区域是插入当前页面内容等内容的地方。还有其他观点,例如您在CMS登录页面上的登录表单。
形状和区域还有很多,但我希望这至少可以让你开始。
有关形状,区域和主题的更多信息,以下是一些有用的资源: