-1

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

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

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

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

这是预测进来的地方???

谢谢

4

3 回答 3

4

根据我对您问题的理解,我的回答是这样的。

如果您使用默认的 ThemeMachine,“主要内容”(即您的博客摘要页面)会被加载到 Content Zone - 它位于 ThemeMachine 的中间容器或区域中,两侧有两个 Aside Zones 或通常称为侧边栏. 为了实现您想要的效果,我会将 Tag Cloud 小部件和 Blogroll 小部件放入左侧/侧边栏或右侧,具体取决于您所追求的外观。

就是这样!

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

现在,如果您想为这些小部件的显示时间设置规则,您可以使用管理仪表板中小部件区域中的图层来执行此操作。对此的详细信息将需要第二个问题;-) 因为我希望能回答您的第一个问题。

PS Projections 可用于替代博客摘要页面和博客小部件。并且可以更好地控制显示的内容。

于 2012-11-06T09:20:00.643 回答
2

我想我现在了解您要完成的工作,并且该解决方案要求您以两种方式之一修改主题,以最可接受的方式为准:


第一个是更可取的方式,但需要做更多的工作。您应该修改Layout.cshtml模板以将当前Content区域拆分为 2 -ContentAside. 这在很大程度上依赖于模板的当前代码,但可能需要更改:

<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以摘要模式显示时才渲染。

于 2012-11-06T17:50:24.190 回答
0

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

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

于 2012-11-13T13:04:35.197 回答