вы уже используете $ Pos Control ( см. Документы ) в своем коде, вы также можете использовать его внутри блока if.
это должно помочь (не проверено):
ВНИМАНИЕ этот фрагмент не работает должным образом. см. ОБНОВЛЕНИЕ ниже
<% control Menu(1) %>
<% if Pos == 1 || Pos == 2 %>
<div>render items 1 and 2 here</div>
<% end_if %>
<% end_control %>
<% control Menu(1) %>
<% if Pos == 3 || Pos == 4 %>
<div>render items 3 and 4 here</div>
<% end_if %>
<% end_control %>
просто обратите внимание, что синтаксис <% if Pos < 3 %>
не поддерживается.
для более чистого способа сделать то же самое, обратитесь к этому фрагменту на ssbits.
UPDATE
к сожалению, Silverstripe, похоже, не поддерживает более сложные условия, как указано выше.
этот поддерживается ( как в документах ):
<% if MyBoolean || MyOtherBoolean %>
тогда как этот не:
<% if MyInteger == 1 || MyInteger == 2 %>
так что, похоже, лучшим решением будет второе, на которое я вам указал (фрагмент выше на ssbits).
в вашем случае это может выглядеть следующим образом:
добавить функции в класс Page, который вы используете для проверки текущей позиции:
public function InFirstDiv() {
return ($this->iteratorPos == 1 || $this->iteratorPos == 2);
}
public function InSecondDiv() {
return ($this->iteratorPos == 3 || $this->iteratorPos == 4);
}
, затем назовите их в своем шаблоне:
<% control Menu(1) %>
<% if InFirstDiv %>
<div>render items 1 and 2 here</div>
<% end_if %>
<% end_control %>
<% control Menu(1) %>
<% if InSecondDiv %>
<div>render items 3 and 4 here</div>
<% end_if %>
<% end_control %>
выглядит не очень умно - но на этот раз должно сработать:)