Orchard CMS博客视图/布局

时间:2012-11-05 17:29:06

标签: c# asp.net-mvc razor orchardcms

我是Orchard CMS& MVC所以请考虑到这一点。任何帮助 - 越多越好 - 将受到极大的欢迎。

我想在我的博客摘要页面添加小部件。实现这一目标的最佳方法是什么?我已经尝试为图层规则定义的博客摘要页面创建一个图层,以便对此页面是唯一的。但是,这只允许我将小部件添加到图层区域中。

我需要/想要做的是有效地创建一个带标签云的侧栏和显示其他帖子标题的博客,以及其他一些内容。这意味着将博客摘要内容移动到另一个区域,以便我可以将小部件放在一边。

这是正确的做法吗?如果是这样,我如何将摘要内容转移到另一个区域? 如果这不是最好的方法,那么???

这是预测的来源吗?

由于

3 个答案:

答案 0 :(得分:4)

从我对你的问题的理解,我的回答是这样的。

如果您使用的是默认的ThemeMachine,则“主要内容”即您的博客摘要页面会加载到内容区域中 - 该区域位于ThemeMachine的中间容器或区域中,并且两侧是两个旁边区域或通常称为侧边栏。为了实现您的需求,我会将Tag Cloud小部件和Blogroll小部件放入左侧Aside /侧边栏或右侧,具体取决于您所看到的外观。

就是这样!

现在这取决于您正在使用的主题,并且Aside Zone(s)实际上可供使用,由主题清单决定,主题清单是主题根目录中的Theme.txt文件。

现在,如果您要为显示这些窗口小部件设置规则,可以使用管理仪表板中“窗口小部件”区域中的“层”来执行此操作。有关这方面的细节需要第二个问题;-)因为我希望能够回答你的第一个问题。

P.S。可以使用预测来替换“博客摘要”页面和“博客”窗口小部件。并且可以更好地控制显示的内容。

答案 1 :(得分:2)

我想我现在明白你要完成什么,解决方案要求你以两种方式之一修改你的主题,以最可接受的方式:


第一种方式更为可取,但需要做更多工作。您应修改Layout.cshtml模板,以便在2 - ContentContent中拆分当前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浮动在左侧,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时呈现。

答案 2 :(得分:0)

最后,我能够找到相关的视图然后切换区域,以便在右侧出现较窄的区域。然后创建一个投影以返回博客文章摘要并将其放在左侧较大的区域中。

感谢所有试图提供帮助的人。我知道必须有一个简单的答案,因此我最初的简化问题。我没有意识到这会引起如此多的悲伤。