SilverStripe连续获得第一个孩子

时间:2011-11-21 21:45:24

标签: templates silverstripe

我有多个孩子,我在网格中显示。 4个孩子连成一排。现在我想连续给每个第一个和最后一个孩子一个额外的类来指定更多样式。我试过了:

<% if FirstInRow %>
    <div class="gridContent firstInRow"></div>
<% else %>
    <div class="gridContent"></div>
<% end_if %>

这就是功能:

function FirstInRow(){
    return ($this->Pos(1) % 4 == 1) ? true : false;
}

2 个答案:

答案 0 :(得分:3)

您可以在模板中使用ModulusMultipleOf控件。

$Modulus(value, offset) // returns an int
$MultipleOf(factor, offset) // returns a boolean.

http://doc.silverstripe.org/sapphire/en/reference/advanced-templates#modulus-and-multipleof

答案 1 :(得分:0)

当你从0开始时,模数效果更好。试试这个:

function FirstInRow(){
    return ($this->Pos(0) % 4 == 0);
}

请注意,我也删除了redunandant ternay运算符;如果能让代码更清晰,你可以把它留下来。