Главная » Хаки DLE » Хак Правильно склоняем слова в DLE

Хак Правильно склоняем слова в DLE

  • Хаки 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