Joomla: исправление отображения количества статей
Написал microsin   
10.01.2008

При отображении списка категорий статей "не по-русски" выводится  количество статей в категории - применятеся вместо слова "статья" в нужном падеже всегда одно и то же слово "элементы".

Например:

  • HTML  ( 36 элементы )
    Кое-что по веб-дизайну.
  • AVR  ( 19 элементы )
    С чего начать, примеры, советы по программированию.
  • MSC51  ( 4 элементы )
    Примеры применения микроконтроллеров семейства MCS51 с исходниками.
  • PC  ( 31 элементы )
    Программирование для IBM PC, решение проблем, советы (...)

Проблема заключается в слишком простом коде отображения количества статей - не анализируется последняя цифра количества и не подставляется в зависимости от её значения нужный падеж (36 статей, 1 статья и т. д.), а также слово "элементы" тупо берется из константы _CHECKED_IN_ITEMS, определенной в файле language/russian.php. Исправить ошибку довольно просто - добавляем в файл components/com_content/content.html.php следующий код:
<?php
...
function PrintRusNumArticles ($num)
{
   $remainder = $num % 100;
   if (($remainder>=11)&&($remainder<=14))
   {
      return $num.' статей';
   }
   $remainder = $num % 10;
   switch ($remainder)
   {
   case 0:
   case 5:
   case 6:
   case 7:
   case 8:
   case 9:
           return $num.' статей';
           break;
   case 1: return $num.' статья';
           break;
   case 2:
   case 3:
   case 4:
           return $num.' статьи';
           break;
   }
}
...
    <i>( <?php echo /*$row->numitems; echo _CHECKED_IN_ITEMS*/PrintRusNumArticles($row->numitems);?> )</i>
...

Функция PrintRusNumArticles возвращает корректно слово "статья" в нужном падеже в зависимости от количества статей (достаточно проанализировать последнюю цифру количества, для чего используется деление по модулю 10). Потом в том месте, где выводилась константа _CHECKED_IN_ITEMS, вставляется вызов функции PrintRusNumArticles. Теперь количество статей отображатся правильно:

  • HTML  ( 36 статей )
    Кое-что по веб-дизайну.
  • AVR  ( 19 статей )
    С чего начать, примеры, советы по программированию.
  • MSC51  ( 4 статьи )
    Примеры применения микроконтроллеров семейства MCS51 с исходниками.
  • PC  ( 31 статья )
    Программирование для IBM PC, решение проблем, советы (...)
Последнее обновление ( 29.01.2010 )