如何从Orchard备用内部渲染区域或窗口小部件?

时间:2012-03-16 07:29:51

标签: asp.net-mvc asp.net-mvc-3 razor orchardcms

我正试图在Orchard中重现this layout。到目前为止,我已经通过在我的博客帖子详细信息(Content-BlogPost.Detail.cshtml)中使用备用文件来解决大部分问题。问题是我创建的布局看起来像这样:

enter image description here

我的第一个问题是,这种布局是否有意义?有没有更好的方法来完成这个结果(也就是说,使档案显示与内容一致)?

其次,有没有办法从备用内部渲染区域(或小部件)?我尝试了@Display(Model.Archives),其中Archives是我的区域的名称,但显然博客详情模型没有定义Archives属性。我还考虑使用类似

的方式手动调用Blog Archives形状
@Display(New.Parts_Blogs_BlogArchives(new { Blog: blog, Archives: ???})

但我不知道如何填充第二个论点。

在Orchard中进行此布局的正确方法是什么?

1 个答案:

答案 0 :(得分:7)

此布局的主要问题是 Archives 区域被放置在博客帖子的标记内。这使事情变得更难,但并非不可能。

解决方案是将整个布局区域渲染到备用区域内,就像你说的那样。您可以显示每个形状的主要顶级布局区域,如下所示:@Display(Layout.Archives)Layout是一个属性,可让您访问主要的布局形状。

我会这样做:

  1. 在您的Theme.txt清单文件(区域部分)中添加名为Archives的区域,该区域将成为博客存档窗口小部件的占位符。确保您Layout.cshtml文件中呈现它。此区域将严格用于博客文章目的(您也可以给它一个不同的名称来注意这一点)。
  2. 为博客帖子创建替代形状,就像您一样,并在适当的位置调用Display(Layout.Archives) 。这将使整个区域内部呈现博客文章标记。
  3. 将博客存档窗口小部件放入档案馆区域。
  4. 现在,每次呈现任何博客帖子时,它都会呈现档案小部件。