SilverStripe 3.1:将列表分成垂直列(可变长度)
SilverStripe 3.1: Divide list into vertical columns (variable length)
这听起来像是一个简单的问题,但我有点难过。
我试过使用 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 月 11 日 - 下午 7:30 - POWERSTOCK
小屋,DT6 3TB
售票处:01935 873555 / 网站
门票:£10.00/£8.00
2 月 13 日 - 地点
贝德福德
售票处:01234 354321 / 网站
3 月 14 日 - 预览:地点
贝德福德
售票处:01234 354321 / 网站
4 月 18 日 - 奇尔韦尔艺术中心
比斯顿
您需要一个自定义迭代器属性。您已经通过核心向您提供了 $First
、$Last
和 $Middle
,但是 $Middle
并没有达到大多数人的期望。中值迭代不是 return 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 %>
这听起来像是一个简单的问题,但我有点难过。
我试过使用 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 月 11 日 - 下午 7:30 - POWERSTOCK 小屋,DT6 3TB 售票处:01935 873555 / 网站 门票:£10.00/£8.00
2 月 13 日 - 地点 贝德福德 售票处:01234 354321 / 网站
3 月 14 日 - 预览:地点 贝德福德 售票处:01234 354321 / 网站
4 月 18 日 - 奇尔韦尔艺术中心 比斯顿
您需要一个自定义迭代器属性。您已经通过核心向您提供了 $First
、$Last
和 $Middle
,但是 $Middle
并没有达到大多数人的期望。中值迭代不是 return 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 %>