我是新在果园,我想在果园创建一个网站的主题,这已经在ASP.NET MVC5中建立。我是否需要将标记从以前的Layout.cshtml页面复制到orchard themes/MyTheme/Views/Layout.cshtml页面或其他需要的页面?
感谢进阶...!
发布于 2017-11-20 19:39:47
TLDR;
从本质上讲,可以:将MVC5布局内容复制到果园主题的Layout.cshtml文件。
但是还有其他的东西:你的源MVC5 Layout.cshtml文件可能包含像<doctype>,<head>和<body>这样的元素。
这些元素需要放入一个名为Document.cshtml的新文件中(也在主题的Views文件夹中)。
最终结果是,您的Document.cshtml文件包含外部HTML结构,包括<body>元素,但<body>元素的内容驻留在Layout.cshtml文件中。
果园主题基础
虽然你在开始创建Orchard主题时不一定要理解这一点,但我发现最终它会让你成为一个更有效率的themer。这里有一个关于Orchard模板和形状的简短入门。
Orchard的模板引擎使用形状的层次结构,这些形状是动态对象。每个形状都是使用形状模板(通常以Razor视图的形式)呈现的。
每个页面的根是由Layout.cshtml形状模板呈现的Layout形状。
形状可以有“包装器”。对于布局形状,定义了一个名为Document的包装器。这实际上意味着在你的主题中,你可以有一个Document.cshtml文件和一个Layout.cshtml文件(如果你的主题中没有Document.cshtml文件,将使用一个默认的)。
Document.cshtml视图通常定义文档类型、<head>元素和<body>元素。将在该<body>元素中呈现<Layout>形状的内容。
因此,根据您的MVC5 Layout.cshtml文件中的内容,您可能需要也可能不需要在主题的视图文件夹中创建Document.cshtml文件。就我个人而言,我通常会这样做,以便在需要时很容易进行更改。
页眉和页脚等内容通常会放入主题的Layout.cshtml文件中,因此您可以直接从MVC5 Layout.cshtml文件中复制它们。
最终,您会希望用来自CMS的内容替换“硬编码”的HTML。然后就可以开始向Layout.cshtml文件声明区域了。
要定义区域,您只需将以下内容添加到您的Layout.cshtml:
@Display(Model.MyZoneName)您可以随心所欲地使用任何专区名称(您不需要在其他任何地方定义它们;除非在主题的清单文件(Theme.txt)中,以防您想要允许CMS用户向这些专区添加小部件)。
Orchard知道许多预定义的区域。在Layout.cshtml文件中,最重要的是内容区域:
@Display(Model.Content)内容区域是插入当前页面内容等内容的位置。而且还有其他视图,例如当您在CMS的登录页面上时的登录表单。
有关形状和区域的内容还有很多,但我希望这至少能帮助您入门。
有关形状、区域和主题的更多信息,请参阅以下一些有用的资源:
https://stackoverflow.com/questions/47378234
复制相似问题