我有一个页面,此页面有很多,一个或没有评论。
在某一点上,我只想显示评论数,而不要遍历所有评论。但是,由于需要翻译,因此需要在注释计数的两个复数版本之间进行区分,因此可以简单地调用$Comment.Count
。由于翻译器组件似乎没有任何多元支持,因此我需要在模板级别进行。
到目前为止,我所得到的是:
<% if Comments %>
<% control Comments %>
<span class="comments">
<% if Count == 1 %> ein Kommentar<% else %>$Count Kommentare<% end_if %></span>
<% end_control %>
<% end_if %>
这有效,但是重复计数时间。有没有解决方法?我知道在我的Page类中创建函数的可能性,例如
function CommentCount(){
return $this->Comments->Count();
}
但这有点乏味。
最佳答案
我做了一个小装饰,因为这种事情让我很烦。
这么小的东西可能有点重量级,但是您可以轻松扩展它以提供所需的内容。
基本上,它向DataObjectSet添加了一个方法,因此您可以执行以下操作:
$Comments.Count $Comments.Plural(SingularWord, PluralWord)
目前,如果您不提供PluralWord,它将尝试使用典型的英语拼写更改来猜测复数。
代码在这里:
https://github.com/lingo/silverstripe-bits-and-bobs/blob/master/code/Pluraliser.php
帮助和自述文件在这里:
https://github.com/lingo/silverstripe-bits-and-bobs/
关于silverstripe - SilverStripe模板:不重复显示DataObject::Count,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9197868/