Всем привет.
Для тех кому интересно - простое решение для отображения правильной формы слов обозначающих количество комментариев.
открываем components/com_zoo/partials/_comments.php (решение для комментариев внутри статьи)
далее заменяем код
<h3 class="comments-meta">
<span class="comments-count"><?php echo JText::_('Comments').' ('.$params->get('count').')'; ?></span>
</h3>
на следующий
<?php if ((count($comments)-1) > 0) {
$endingArray = array(' комментарий',' комментария',' комментариев');
$number = count($comments)-1;
$number = $number % 100;
if ($number>=11 && $number<=19) {
$ending=$endingArray[2];
}
else {
$i = $number % 10;
switch ($i)
{
case (1): $ending = $endingArray[0]; break;
case (2):
case (3):
case (4): $ending = $endingArray[1]; break;
default: $ending=$endingArray[2];
}
}
$text = $number.$ending;
?>
<h3 class="comments-meta">
<span class="comments-count"><?php echo $text; ?></span>
</h3>
<? } ?>
в итоге получаем: при нулевом количестве ничего не отображается и мы сразу видим надпись "Оставить комментарий"
при одиночном комментарии текст "1 Комментарий" а при множественных комментариях тексты, например, "2 комментария" или "7 комментариев", с правильным, соответствующим своему числу окончанием.
пример можно посмотреть на этом
сайтедалее открываем файл media/zoo/elements/itemcommentslink/itemcommentslink.php (для комментариев в категории)
заменяем это
if ($comment_count == 0) {
$text = isset($params['no_comments_text'])? $params['no_comments_text'] : JText::_('No comments');
} else if ($comment_count == 1) {
$text = sprintf((isset($params['single_comment_text'])? $params['single_comment_text'] : JText::_('%s comment')), 1);
} else {
$text = sprintf((isset($params['multiple_comments_text'])? $params['multiple_comments_text'] : JText::_('%s comments')), $comment_count);
}
на это
if ($comment_count == 0) {
$text = isset($params['no_comments_text'])? $params['no_comments_text'] : JText::_('No comments');
} else {
$endingArray = array(' комментарий',' комментария',' комментариев');
$number = $comment_count;
$number = $number % 100;
if ($number>=11 && $number<=19) {
$ending=$endingArray[2];
}
else {
$i = $number % 10;
switch ($i)
{
case (1): $ending = $endingArray[0]; break;
case (2):
case (3):
case (4): $ending = $endingArray[1]; break;
default: $ending=$endingArray[2];
}
}
$text = $comment_count.$ending;
}
второй пример
здесь, количество комментариев показывается при наведении на тизер новости.
Здесь при нулевом количество комментариев отображается текст из настроек commentslink в админке ZOO, а при множественном варианты "1 комментарий, 2 комментария, 7 комментариев" и т.п.