- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 Orchard 中创建一个已经内置在 ASP.NET MVC5 中的网站主题。
我是否需要将我的标记从以前的 Layout.cshtml 页面复制到 orchard themes/MyTheme/Views/Layout.cshtml 页面或是否需要其他任何内容?
最佳答案
基本上,是的:将您的 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 View 的形式)。
每个页面的根是 Layout
形状,由 Layout.cshtml 形状模板呈现。
形状可以有“包装”。对于布局形状,定义了一个名为 Document
的包装器.这实际上意味着在您的主题中,您可以有一个 Document.cshtml 文件和一个 Layout.cshtml 文件(如果您的主题中没有 Document.cshtml 文件,将使用默认文件)。
Document.cshtml View 通常定义文档类型,<head>
元素和 <body>
元素。 <Layout>
的内容形状将在 <body>
内呈现元素。
因此,根据 MVC5 Layout.cshtml 文件中的内容,您可能需要也可能不需要在主题的 Views 文件夹中创建 Document.cshtml 文件。就我个人而言,我通常会这样做,以便在需要时轻松进行更改。
页眉和页脚等内容通常会放入主题的 Layout.cshtml 文件中,因此您只需从 MVC5 Layout.cshtml 文件中复制它们即可。
最终您会希望用来自 CMS 的内容替换“硬编码”HTML。然后是时候开始向您的 Layout.cshtml 文件声明区域了。
要定义一个区域,您需要做的就是将以下内容添加到您的 Layout.cshtml:
@Display(Model.MyZoneName)
您可以根据需要随意使用任何区域名称(您不需要在其他任何地方定义它们;除了在主题的 list 文件 (Theme.txt) 中,以防您希望允许 CMS 用户将小部件添加到这些区域)。
有许多 Orchard 知道的预定义区域。在 Layout.cshtml 文件中,最重要的是 Content 区域:
@Display(Model.Content)
内容区是插入当前页面内容等内容的地方。还有其他 View ,例如在 CMS 的登录页面上的登录表单。
形状和区域还有很多内容,但我希望这至少能让您入门。
有关形状、区域和主题的更多信息,这里有一些有用的资源:
关于c# - Orchard CMS 如何在 Orchard CMS 中传输我的 ASP.NET MVC 布局(页眉、页脚等)/主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47378234/
我是一名优秀的程序员,十分优秀!