Orchard CMS 如何在 Orchard CMS 中传输我的 ASP.NET MVC 布局(页眉、页脚等)/主题?

Osa*_*bir 1 c# asp.net-mvc orchardcms orchardcms-1.9

我是果园的新手,我想在果园中创建一个已经在 ASP.NET MVC5 中构建的网站主题。我是否需要将我的标记从以前的 Layout.cshtml 页面复制到 orchard themes/MyTheme/Views/Layout.cshtml 页面中或需要其他任何内容?

提前致谢...!

Sip*_*tra 5

TLDR;

本质上,是的:将您的 MVC5 布局内容复制到您的 Orchard 主题的 Layout.cshtml 文件中。

但还有其他东西:您的源 MVC5 Layout.cshtml 文件可能包含诸如<doctype>,<head><body>元素之类的内容。

这些元素需要进入一个名为Document.cshtml的新文件(也在您的主题的 Views 文件夹中)。

最终结果将是您的 Document.cshtml 文件包含外部 HTML 结构,包括<body>元素,但元素的内容<body> 驻留在 Layout.cshtml 文件中。

果园主题基础

虽然您在开始时不一定需要理解这一点才能创建一个果园主题,但我发现最终它会让您成为一个更有效的主题。所以这里有一个关于果园模板和形状的简短入门。

果园的模板引擎支持的层次结构形状,它是动态的对象。每个形状都使用形状模板(通常以 Razor 视图的形式)呈现。

每个页面的根是Layoutshape,由 Layout.cshtml 形状模板呈现。

形状可以有“包装器”。对于布局形状,定义了一个名为Document. 这实际上意味着在您的主题中,您可以有一个 Document.cshtml 文件和一个 Layout.cshtml 文件(如果您的主题中没有 Document.cshtml 文件,则将使用默认文件)。

Document.cshtml 视图通常定义文档类型、<head>元素和<body>元素。<Layout>形状的内容将在该<body>元素内呈现。

因此,根据您在 MVC5 Layout.cshtml 文件中的内容,您可能需要也可能不需要在主题的 Views 文件夹中创建 Document.cshtml 文件。就我个人而言,我通常会这样做,以便在需要时轻松进行更改。

诸如页眉和页脚之类的内容通常会进入主题的 Layout.cshtml 文件,因此您只需从 MVC5 Layout.cshtml 文件中复制它们即可。

最终,您将希望用来自 CMS 的内容替换“硬编码”HTML。然后是时候开始向 Layout.cshtml 文件声明区域了。

要定义区域,您需要做的就是将以下内容添加到 Layout.cshtml:

@Display(Model.MyZoneName)
Run Code Online (Sandbox Code Playgroud)

您可以随心所欲地使用任何区域名称(您不需要在其他任何地方定义它们;除非在您的主题清单文件 (Theme.txt) 中,以防您希望允许 CMS 用户将小部件添加到这些区域)。

Orchard 知道许多预定义的区域。在 Layout.cshtml 文件中,最重要的是 Content 区域:

@Display(Model.Content)
Run Code Online (Sandbox Code Playgroud)

内容区域是插入当前页面内容等内容的地方。还有其他视图,例如当您在 CMS 的登录页面上时的登录表单。

形状和区域还有更多内容,但我希望这至少能让您入门。

有关形状、区域和主题的更多信息,以下是一些有用的资源: