2017-08-25 11 views
0

これは簡単な質問のように聞こえるかもしれませんが、私はちょっと困ります。SilverStripe 3.1:リストを縦の列に分割する(可変長)

モジュラスとマルチプルを使ってみました https://docs.silverstripe.org/en/3/developer_guides/templates/syntax/ これは私に水平になるリストを与えています。 2つの列が必要です。リストされたデータオブジェクトの最初の半分を含む最初の列と、後半の2番目の列。

CSSを使用するとコンテンツが分割され、liコンテナが無視されるため、リスト項目(それぞれ複数行)のいくつかが分割されます。 https://www.w3schools.com/Css/css3_multiple_columns.asp

本当に私は中間のデータオブジェクトを見つけて、html/cssを使用して分割することができます。どんな提案も大歓迎です。 - 7.30PM

1 5月11日:ここ

が示す4つの項目私のリストの例です、カラム1は、項目1 & 2及びカラム2、3 & 4(実際のリストは任意の長さであってもよい)を含んでなります - POWERSTOCK HUT、DT6 3TB 興行:01935 873555 /ウェブサイト チケット:£10.00 /£8.00

10月2日14 - PLACE BEDFORD興行:/ウェブサイト

10月3日14日 - PREVIEW:PLACE BEDFORD ボックスオフィス:/ウェブサイト

10月4日18 - ChilwellのARTS CENTER ビーストン

答えて

2

カスタムイテレータのプロパティを必要としています。 $First$Last、および$Middleがコアを通じて使用可能になっていますが、$Middleはほとんどの人が期待することをしません。中央値の反復で真実を返すのではなく、それは最初と最後の間の何かであり、それはしばしば役に立たない。

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 %> 
+0

パーフェクト。 Shame $ Middleは、あなたが期待していることをしないか、標準として$ Medianを持っていないだけです。 – pinkp

関連する問題