首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SilverStripe 3.1:将列表划分为垂直的列(可变长度)

SilverStripe 3.1:将列表划分为垂直的列(可变长度)
EN

Stack Overflow用户
提问于 2017-08-26 04:07:56
回答 1查看 87关注 0票数 0

这听起来可能是一个简单的问题,但我有点困惑。

我试过使用Modulus和MultipleOf https://docs.silverstripe.org/en/3/developer_guides/templates/syntax/,但这给了我一个水平的列表。我想要两列,第一列包含列出的数据对象的前半部分,第二列包含后半部分。

使用CSS不起作用,因为它拆分内容并忽略li容器,因此我的一些列表项(每个列表项有多行)被拆分。https://www.w3schools.com/Css/css3_multiple_columns.asp

实际上,我希望能够找到中间的数据对象,并使用html / css对其进行划分。欢迎任何建议。

这是我的列表的一个例子,它显示了4个项目,列1将包含项目1和2,列2,3和4(实际的列表可以是任何长度):

5月1- 11 -7:30£POWERSTOCK THE HUT,DT6 3TB票房: 01935 873555 /网站门票:£10.00/£8.00

2013年10月2日--《贝德福德广场》票房: 01234 354321 /网站

10月14日-预览:贝德福德广场票房: 01234 354321 /网站

10月4日至18日-奇尔韦尔艺术中心比斯顿

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-26 18:02:25

您需要一个自定义迭代器属性。您可以通过内核使用$First$Last$Middle,但是$Middle并不能满足大多数人的期望。它不是在中值迭代中返回true,而是介于第一次迭代和最后一次迭代之间的任何内容,这通常没有帮助。

代码语言:javascript
复制
class MyIteratorProperties implements TemplateIteratorProvider
{   
    protected $totalItems;

    protected $pos;

    public static function get_template_iterator_variables()
    {
        return ['Median'];
    }

    public function iteratorProperties($pos, $totalItems)
    {
        $this->pos = $pos;
        $this->totalItems = $totalItems;
    }

    public function Median()
    {
        return $this->pos == floor($this->totalItems/2);
    }

}

和你的模板:

代码语言:javascript
复制
<% $loop $SomeItems %>
    <% if $Median %></div><div ...><% end_if %>
<% end_loop %>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45888727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档