1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

Склонения слов в полях представлений

Главные вкладки

Добрый день!

У меня в представлениях есть поле {{ field_fru }}, это число, я его скрываю и вывожу в пользовательском поле, например:

У меня есть {{ field_fru }} фруктов.

Т.е. могут быть варианты:

У меня есть 1 фрукт.

У меня есть 2 фрукта.

У меня есть 5 фруктов.

Знаю, там в представлении есть множественные настройки, но это не то. В русском языке слово может принимать 3 варианта склонения, а в настройках только 2 можно настроить.

Как можно сделать, чтобы слово "фрукты" (и все остальные слова) склонялось правильно, в зависимости от числа в поле field_fru? Может какой-нибудь php-код прямо в пользовательское поле добавить или другой способ более оптимальный есть?

Комментарии

Аватар пользователя ignatev ignatev 2 апреля в 20:44
1

Для русского языка проще всего использовать функцию для склонения слов по числу, прямо в пользовательском поле с PHP в Drupal Views. Пример:

<?php
function plural_form($number, $forms) {
// $forms = ['фрукт', 'фрукта', 'фруктов']
$number = abs($number) % 100;
$n1 = $number % 10;
if (
$number > 10 && $number < 20) return $forms[2];
if (
$n1 > 1 && $n1 < 5) return $forms[1];
if (
$n1 == 1) return $forms[0];
return
$forms[2];
}
$count = (int) $row->field_field_fru[0]['raw']['value']; // или как у вас field_fru доступен
$word = plural_form($count, ['фрукт', 'фрукта', 'фруктов']);

print

"У меня есть $count$word.";
?>
  • plural_form() получает число и массив из 3 форм слова.
  • Возвращает правильную форму в зависимости от числа.
  • Можно использовать с любым словом, просто меняете массив: ['яблоко','яблока','яблок'].
Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /