我想我现在了解您要完成的工作,并且该解决方案要求您以两种方式之一修改主题,以最可接受的方式为准:
第一个是更可取的方式,但需要做更多的工作。您应该修改Layout.cshtml
模板以将当前Content
区域拆分为 2 -Content
和Aside
. 这在很大程度上依赖于模板的当前代码,但可能需要更改:
<section id="content-area">
@Zone(Model.Content)
</section>
到:
<section id="content-area">
@Zone(Model.Content)
</section>
@if(Model.Aside != null){
<aside id="aside-area">
@Zone(Model.Aside)
</aside>
}
接下来,您需要更改 CSS 以使您content-area
的 CSS 浮动在左侧,而aside-area
浮动在右侧。
您还需要更改Theme.txt
主题文件以添加Aside
到区域列表中。
您现在可以将小部件添加到Aside
区域。如果这些小部件应仅在特定情况下显示,则当您希望显示小部件时,您必须制作额外的图层,这些图层将在这些情况下处于活动状态。
第二种解决方案是您希望仅当博客以摘要模式显示时才显示这些小部件。此解决方案不是使用 Orchard 的常规方式,而是 Orchard 允许但在设计时并未考虑到这一点的技巧。尽管如此,我发现它在某些情况下很有用,所以就在这里。
更改Theme.txt
为在区域列表中添加Aside
区域。
在您的主题中创建一个新模板并将其命名Content-Blog.cshtml
。编辑它,使其具有以下内容:
<section id="content-area">
@Display(Model.Content)
</section>
@if(Layout.Aside != null){
<aside id="aside-area">
@Display(Layout.Aside)
</aside>
}
您还必须进行 CSS 更改以将您的Aside
区域设置为内容的右侧。
现在您可以将小部件添加到Aside
区域。请注意,现在您不必创建新图层,因为Aside
区域显示的唯一时间是在Content-Blog.cshtml
渲染时,并且仅在Blog
以摘要模式显示时才渲染。