这可能听起来像一个简单的问题,但我有点难过。
我尝试过使用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和3列,3& 4(实际列表可以是任何长度):
1月5日 - 7:30 - POWERSTOCK 小屋,DT6 3TB BOX OFFICE:01935 873555 / WEBSITE 门票:£10.00 /£8.00
2 OCT 13 - THE PLACE 贝德福德 BOX OFFICE:01234 354321 / WEBSITE
3 OCT 14 - 预览:地点 贝德福德 BOX OFFICE:01234 354321 / WEBSITE
4月18日 - CHILWELL艺术中心 比斯顿
答案 0 :(得分:2)
您需要一个自定义迭代器属性。您可以通过核心向$First
,$Last
和$Middle
提供,但$Middle
并不能满足大多数人的期望。而不是在中值迭代上返回true,它只是在第一个和最后一个之间的任何东西,这通常没有帮助。
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);
}
}
你的模板:
<% $loop $SomeItems %>
<% if $Median %></div><div ...><% end_if %>
<% end_loop %>