Хак Правильно склоняем слова в DLE
- Хаки DLE
Учим DataLife Engine красиво и правильно склонять слова в шаблонах и не только.
Установка:
Открыть файл engine/modules/functions.php и в самом конце его вместо:
?>
вставить:
/**
* Word declination function
*
* @param int $num
* @param string $words - examples: 'просмотр|а|ов', 'комментари|й|я|ев', '|ребенок|ребенка|детей', 'view|s'
* @return string
* @author S. Startsev
*/
function word_declination($num, $words) {
if (is_string($words)) {
$words = trim($words);
$parts = explode('|', $words);
$r = array_shift($parts);
if ($r == '') {
$words = $parts;
if (!isset($words[2])) $words[2] = $parts[1];
} else {
$count_parts = count($parts);
$words = array($r, $r, $r);
switch ($count_parts) {
case 1:
$words[1] .= $parts[0];
$words[2] .= $parts[0];
break;
case 2:
$words[1] .= $parts[0];
$words[2] .= $parts[1];
break;
case 3:
$words[0] .= $parts[0];
$words[1] .= $parts[1];
$words[2] .= $parts[2];
break;
}
}
}
$num = $num % 100;
if ($num > 19) $num = $num % 10;
return (($num == 1) ? $words[0] : (($num > 1 && $num <= 4) ? $words[1] : $words[2]));
}
Открыть index.php и найти:
echo $tpl->result['main'];
Выше вставить:
$tpl->result['main'] = preg_replace("#\[declination=(\d+)\](.+?)\[/declination\]#ies", "word_declination('\\1', '\\2')", $tpl->result['main']);
Установка завершена.
Пример использования в шаблоне полной новости fullstory.tpl:
[declination={comments-num}]комментари|й|я|ев[/declination]
[declination={views}]просмотр|а|ов[/declination]
Таким способом любое число (либо свое, либо выводимое модулем) мы можем скормить declination и получить человеческое слово.
Еще примеры склоняемых слов в других его вариациях задокументированы в самом коде по ссылке выше.
Автор: S. Startsev
Реализация в DLE: aL13n
источник: prowebber.ru по материалам habrahabr.ru
Ключевые слова по теме Хак Правильно склоняем слова в DLE: хак DLE, Правильно склоняем слова в DLE