Использование тегов declination во всех файлах шаблона
Не так давно в скрипте появился новый тег declination задача которого склонять слова относительно цифр, но он работает не во всех файлах. К примеру в файле отвечающий за логин он не будет работать, что с одной стороны упущение со стороны разработчика. Но теперь с этим хаком вы сможете изменить эту мелочь. Конечно же он подойдет не для всех сайтов, здесь вы уже должны исходить из особенностей своего сайта нужно ли вам использование тегов declination во всех файлах шаблона или нет.
Установка:
Открыть index.php в корне сайта и найти:
echo $tpl->result['main'];
Выше вставить:
$tpl->result['main'] = preg_replace_callback ( "#\\[declination=(\d+)\\](.+?)\\[/declination\\]#is", "declination", $tpl->result['main'] );
Открыть файл engine/modules/functions.php и найти:
return $matches[1]." ".$word;
Заменить на:
return $word;
Готово.
Теперь же давайте вернемся к самому главному, после того как мы внесли все изменения, как же это будет работать.
Если использовать такую конструкцию:
У вас [declination={new-pm}]сообщени|е|я|ий[/declination]
То результат на странице будет выглядеть вот так:
У вас 10 сообщений
Этот хак убирает число и пробел между словом, оставляя только склоненное слово, создавая потребность писать числовой тег дополнительно. Тем самым позволяет использовать более сложные конструкции такого вида:
У вас {new-pm} [declination={new-pm}]нов|ое|ых|ых[/declination] [declination={new-pm}]сообщен|ие|ия|ий[/declination]
Результат на странице будет выглядеть вот так:
У вас 10 новых сообщений
Более подробнее вы можете ознакомится с данным тегом declination и понять как он работает полистав документацию к скрипту которая есть как в онлайн виде, так и в оффлайн виде, обычно она идет в комплекте со скриптом.
Автор: vir2oz
Версия DLE: 10.1 и выше