Перейти к содержимому


Фото
- - - - -

Склонения имен в характеристиках

склонения слов характеристики склонения вариантов

  • Чтобы отвечать, сперва войдите на форум
5 ответов в теме

#1 Gregar

Gregar
  • Пользователь
  • 110 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 01.09.2015 - 18:21

Всем привет.

 

Решил сделать краткие описания товаров автоматическими используя при этом информацию их характеристик, категорий и брендов.

 

На данный момент у меня в характеристиках к товару имеется к примеру: "цвет - черный", в описании мне необходимо произвести склонение данного свойства чтобы было черный = черная и т.п.

Подскажите пожалуйста как это правильно реализовать и написать на Smarty??? 

Если у кого-то есть какие-то идеи касательно автоматического краткого описания пишите суда.

 

Спасибо..



#2 jonny008

jonny008
  • Пользователь
  • 96 сообщений

Опубликовано 01.09.2015 - 20:32

Может как то по аналогии. 

 

Найдено в интернете: 

 

Нужно сохранить код приведенный ниже в файл function.decliner.php в каталоге с плагинами Smarty

<?php
/**
 * Smarty {decliner} function plugin
 *
 * Type:     function<br>
 * Name:     decliner<br>
 * Purpose:  handle word declines based on quantity number<br>
 * @param array $params
 * <pre>
 * Params:  qty: number of items to choose correct declining form
 *          word: declining forms of word. Ex: день, дня, дней.
 * </pre>
 * @param Smarty
 * @return string
 */
function smarty_function_decliner($params, &$smarty)
{
    // be sure equation parameter is present
    if (empty($params['qty']))
	$params['qty']=0;
    if (empty ($params['word'])) {
        $smarty->trigger_error("decliner: missing required parameter");
        return;
    }
    $forms=explode(',',$params['word']);
    $params['qty'] = abs($params['qty']) % 100;
    $n1 = $params['qty'] % 10;
    if ( $params['qty'] > 10 &&  $params['qty'] < 20) return $forms[2];
    else if ($n1 > 1 && $n1 < 5) return $forms[1];
    else if ($n1 == 1) return $forms[0];
    return $forms[2];

}

/* vim: set expandtab: */

?>

Затем в шаблонах можно использовать вот так.

{decliner qty=4 word='письма, письма, писем'}

 



#3 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 02.09.2015 - 09:41

Определить форму склонения на ходу вряд ли удастся. Словари объемные подключать - нелегкое решение. Особенно если встречается цвет "мокрый асфальт" или "морская волна"...

 

Можно значения свойств вводить в разных видах по падежам. Тогда вывод будет совсем несложный. Но в админке работы больше будет. И с экспортом-импортом повозиться...



#4 SerSport

SerSport
  • Пользователь
  • 42 сообщений

Опубликовано 02.09.2015 - 20:26

Воспользуйтесь api яндекса! К стати, на форуме где-то уже было нечто подобное.



#5 mishanya

mishanya
  • Фрилансер
  • 2 547 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 03.09.2015 - 08:51

вот я уже описывал готовое решение с применением яндекс апи



#6 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 03.09.2015 - 09:21

Если на странице товара будет вывод пары десятка свойств, это решение даст дополнительно пару десятков запросов к базе. Надо этот момент как-то оптимизировать...

 

Во вторых, ТС просил
 

...имеется к примеру: "цвет - черный", в описании мне необходимо произвести склонение данного свойства чтобы было черный = черная и т.п.

 

То есть речь не о склонении по падежам, а еще и род надо менять...







Также с меткой «склонения слов, характеристики, склонения вариантов»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых