为EPiServer 7中的每个第三个块创建一个新行

时间:2014-09-17 13:53:57

标签: block rows episerver-7

我有一个问题,我有三个块添加到contentarea,如果用户添加第四个块,那么我需要为第四个块创建一个新行,因为每行只能包含一个最大值三个街区..

问题在于,据我所知,我无法通过我的内容区域中的项目进行迭代,因为它们不是正确的块类型(contentArea.Items属于IList类型),即使我愿意,也不会删除页面编辑,因为HTML没有真正指定在哪里呈现我的属性?..

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

听起来您正试图在 Alloy Mvc示例示例中重现ContentAreaRowBalancer类的功能:

Screenshot of breaking blocks into rows.

着名的Joel Abrahamsson有几篇关于Alloy Mvc样本的博客文章,这里是一个很好的起点:http://world.episerver.com/Articles/Items/ASPNET-MVC-Templates-for-EPiServer-7-CMS/

  • BalancedContentAreaRenderer 类负责内容区域的实际呈现。但是,要弄清楚如何将区域中的内容划分为行,它会使用...
  • 的实例
  • ContentAreaRowBalancer 类是内容区域应如何划分为行的实际逻辑,以及每个内容的宽度。

基本上他们采用的策略是使用(Bootstrap)[http://getbootstrap.com/] CSS将块重新排列成行,而不是试图通过控制Html的呈现方式来引入其他块。从上面的示例图片中,它将呈现为:

<div class="row">
    <div class="jumbotron">  <!-- 12 units wide -->
       ...
    </div>
</div>
<div class="row">
    <div class="4">  <!-- 4 units wide -->
         Alloy Plan Block
    </div>
    <div class="4">
         Alloy Track Block
    </div>
    <div class="4">
         Alloy Meet Block
    <div>
 </div>

如果要添加另一个块,则渲染算法会将其添加到新行:

 <div class="row">
     <div class="12"> <!-- 12 units wide if 1 block, will be changed to 6 if another block is added -->
        New Block
      </div>
 </div>