我有一个页面,此页面有很多,一个或没有评论。
在某一点上,我只想显示评论数,而不要遍历所有评论。但是,由于需要翻译,因此需要在注释计数的两个复数版本之间进行区分,因此可以简单地调用$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/

10-09 08:31