1

Тема: Функция склонения слов в заголовках title для DLE

Помогите реализовать данный функционал, только чтобы он склонял слова находящие в title, то есть нужно чтобы данный код работал в engine.php

PHP файл word.php создать в папке engine/modules с содержимым:
<?PHP
if(!defined('DATALIFEENGINE'))die("Hacking attempt!");
$word = explode("|",$word);$n=intval($n);
echo $n%10==1&&$n%100!=11?$word[0].$word[1]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$word[0].$word[2]:$word[0].$word[3]);
?>

Выводить так:
{include file="engine/modules/word.php?n=7&word=комментари|й|я|ев"}
{include file="engine/modules/word.php?n=1&word=|год|года|лет"}

у меня есть строчка engine.php к примеру:

elseif ($do == 'orderdesc') $nam_e = "Стол заказов";

и склонить нужно например слово "Стол", помогите пожалуйста реализовать!

2

Re: Функция склонения слов в заголовках title для DLE

function wordSpan($n = 0, $words) {
    $words    = explode('|', $words);
    $n        = intval($n);
    return  $n%10==1&&$n%100!=11?$words[0].$words[1]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$words[0].$words[2]:$words[0].$words[3]);
}

elseif ($do == 'orderdesc') {
    $_cnt = '5';
    $nam_e = wordSpan($_cnt,'Сто|л|ла|ов').'<br />';." заказов";
}

3

Re: Функция склонения слов в заголовках title для DLE

Спасибо большое, но почему то не работает!
вставил после

$titl_e = '';
$nam_e = '';
$rss_url = '';

это

function wordSpan($n = 0, $words) {
    $words    = explode('|', $words);
    $n        = intval($n);
    return  $n%10==1&&$n%100!=11?$words[0].$words[1]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$words[0].$words[2]:$words[0].$words[3]);
}

после заменил строчку:

elseif ($do == 'orderdesc') {
    $_cnt = '5';
    $nam_e = wordSpan($_cnt,'Сто|л|ла|ов').'<br />';." заказов";
}

но Adobe Dreamweaver CC показывает ошибка, я убрал ; и ошибка пропала:

elseif ($do == 'orderdesc') {
    $_cnt = '5';
    $nam_e = wordSpan($_cnt,'Наход|иться|яться')." заказы";
}

результат:

Наход заказы

то есть, не работает sad

Re: Функция склонения слов в заголовках title для DLE

function get_rus($fd, $forms)
{
    if (!is_int($fd)&&is_float($fd))//а уж число ли это?
       return $forms[2];
    elseif(is_int($fd))
    {
       $prc = abs($fd) % 100;
       $prc_sec = $prc % 10;
       if ($prc_add == 1)
          return $forms[0];
       if ($prc > 10 && $prc < 20)
          return $forms[2];
       if ($prc_add > 1 && $prc_add < 5)
          return $forms[1];
       return $forms[2];
    };
    return false;//нефик подсовывать ерунду
}
$fd=1.8;
$forms=array('стол', 'стола', 'столов');
echo 'Осталось '.$fd.' '.get_rus($fd, $forms); 

5

Re: Функция склонения слов в заголовках title для DLE

KEFIR, тоже самое, только вид сбоку. Правильнее выносить такие вещи в ф-цию.

Min-Z-Drav,
саму функцию wordSpan можно разместить и в начале php файла не обязательно совать её под условия.

Функция рабочая, проверенная, что-то вы делаете не то и не так. по хорошему надо на месте разбираться.

Re: Функция склонения слов в заголовках title для DLE

ПафНутиЙ, не спорю но может мой способ покажется более простым и наглядным.