Хак Правильное окончание количества комментариев

Тема в разделе "DLE", создана пользователем glam, 28 авг 2008.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. glam

    glam

    Регистр.:
    12 апр 2007
    Сообщения:
    734
    Симпатии:
    217
    Хак выводит в короткой и полной новости вместе обычного и на мой взгляд не правильного высказались: (2) или комментариев: (2)

    2 комментария, 1 комментарий, 10 комментариев

    то есть автоматически подставляет правильное окончание для слова "комментарий" в зависимости от количества самих комментов :)

    УСТАНОВКА:

    1. Открываем engine/modules/show.short.php

    находим

    Код:
    if(!defined('DATALIFEENGINE'))
    {
      die("Hacking attempt!");
    }
    ниже вставляем

    Код:
    function com_type($n) {
      return ($n%10==1 && $n%100!=11 ? 0 : ($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2));
    }
    находим

    Код:
    $news_find = array(
    ВЫШЕ вставляем

    Код:
    $com_num = array('комментарий', 'комментария', 'комментариев');
    находим

    Код:
    		 '{comments-num}'		=> $row['comm_num'],
    НИЖЕ вставляем

    Код:
    		 '{com_type}'			=> $com_num[com_type($row['comm_num'])],
    2. Открываем engine/modules/show.full.php

    находим

    Код:
    if(!defined('DATALIFEENGINE'))
    {
      die("Hacking attempt!");
    }
    ниже вставляем

    Код:
    function com_type($n) {
      return ($n%10==1 && $n%100!=11 ? 0 : ($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2));
    }
    находим

    Код:
    $news_find = array(
    ВЫШЕ вставляем

    Код:
    $com_num = array('комментарий', 'комментария', 'комментариев');
    находим

    Код:
    		 '{comments-num}'		=> $comments_num,
    ниже вставляем

    Код:
    		 '{com_type}'			=> $com_num[com_type($comments_num)],
    3. В шаблон короткой и полной новости вставляем тег {com_type} рядом с {comments-num}, например:

    {comments-num} {com_type} выведет:

    2 комментария

    Автор: Glam [472-472-998]
     
    infant, g-prime, DemanZ и 6 другим нравится это.
  2. $aSH

    $aSH

    Регистр.:
    3 ноя 2006
    Сообщения:
    536
    Симпатии:
    233
    давно видел подобное для WP. еще думал, что полезно перенос сделать, забыл со временем
     
  3. rider1203

    rider1203

    Регистр.:
    4 авг 2008
    Сообщения:
    242
    Симпатии:
    58
    Это очень хорошо,а то меня вечно бесила надпись Комментарии (15)

    Огромное спасибо за хак
     
  4. akimov_aleks

    akimov_aleks

    Регистр.:
    15 авг 2007
    Сообщения:
    523
    Симпатии:
    105
    демо в студию...
    кто поставил дайте глянуть
    и как он рузит двиг...
     
  5. $aSH

    $aSH

    Регистр.:
    3 ноя 2006
    Сообщения:
    536
    Симпатии:
    233
    демо-то зачем? o_O

    0 комментариев
    1 комментарий
    2 комментария
    и так далее

    никак не грузит, если не учитывать выбор значения из массива.

    все равно, что сравниваь ваше дыхание и его вклад в глобальное потепление
     
    glam нравится это.
  6. glam

    glam

    Регистр.:
    12 апр 2007
    Сообщения:
    734
    Симпатии:
    217
    Спасибо за разъяснения. Сделал потому что самого давно бесило то что так не адекватно отображается. На счет ВП вообще не в курсе, не юзаю, просто теперь DLE стал гораздо красивее благодаря моему не сложному хаку... ;)
     
  7. g-prime

    g-prime איך בין גאָט

    Регистр.:
    11 авг 2008
    Сообщения:
    779
    Симпатии:
    1.131
    А как сделать, чтобы место:
    0 комментариев отображалось:
    Комментариев нет
     
  8. dm_mb

    dm_mb

    Регистр.:
    6 июн 2006
    Сообщения:
    610
    Симпатии:
    122
    Перейти по ссылке
    $com_num = array('комментарий', 'комментария', 'комментариев');

    вот тут надо исправить, а вот как убрать ноль, так и не понял. вроде строкой выше идет какое то условие -но неразобрался
     
  9. g-prime

    g-prime איך בין גאָט

    Регистр.:
    11 авг 2008
    Сообщения:
    779
    Симпатии:
    1.131
    Что здесь исправить, ведь окончание комментариев не только 0 принимает, но еще 10, 20 комментариев
     
Статус темы:
Закрыта.