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


Фото
- - - - -

Склонение слова в зависимости от полученного числа


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

#1 kazak

kazak
  • Пользователь
  • 54 сообщений
  • Заказчик
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2018 - 13:57

Ребят, привет.
 
Есть вывод количества товаров в категории. Выглядит так:  Найдено {$total_products_num} товаров
 
Нужно изменить слово "товаров" на нужный падеж и число в зависимости от их количества. 
Чтобы получалось так:
 
Если товар 1: Найдено 1 товар
Если товаров 2-4: Найдено [N] товара
Если товаров 5-20:  Найдено [N] товаров
Если товаров 21, 31, 41 и т.д.: Найдено [N] товар
Если товаров 22-24, 32-34, 42-44 и т.д.: Найдено [N] товара
Если товаров 25-30, 35-40, 45-50 и т.д.: Найдено [N] товаров
 
Подскажите, как красиво прописать это условие? Или хотя бы в какую сторону копать? 
А то не знаю даже как сформулировать запрос в Гугл)
 


#2 ps-simpla

ps-simpla

    Модератор в запасе :)

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

Опубликовано 24.03.2018 - 14:04

{$cart->total_products} {$cart->total_products|plural:'товар':'товаров':'товара'}



#3 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 586 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2018 - 15:08

Вот пожалуйста:
Найдено {$total_products_num} {$total_products_num|plural:'товар':'товаров':'товара'}


#4 kazak

kazak
  • Пользователь
  • 54 сообщений
  • Заказчик
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2018 - 16:35

ps-simpla, Noxter - от души, спасибо!



#5 kazak

kazak
  • Пользователь
  • 54 сообщений
  • Заказчик
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2018 - 17:07

Ребят, хотел судьбу обмануть, но не тут то было.

 

Изначально не все описал, думал это не важно — вместо "товар", "товаров", "товара" у меня для каждой категории созданы дополнительные поля и прописаны переменные. Идея такова, чтобы например для категории "Телевизоры" выводилось "телевизор", "телевизоров", "телевизора".

 

Это подразумевает вывод этих переменных таким образом: {$category->peremennaya_1}, {$category->peremennaya_2}, {$category->peremennaya_3}

 

Но включить вывод этих переменных в предложенную конструкцию не получается... Как можно обойти ситуацию?



#6 Maksclub

Maksclub

    Помогаю с Симплой и c PHP

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

Опубликовано 24.03.2018 - 17:51

Ребят, хотел судьбу обмануть, но не тут то было.

 

Изначально не все описал, думал это не важно — вместо "товар", "товаров", "товара" у меня для каждой категории созданы дополнительные поля и прописаны переменные. Идея такова, чтобы например для категории "Телевизоры" выводилось "телевизор", "телевизоров", "телевизора".

 

Это подразумевает вывод этих переменных таким образом: {$category->peremennaya_1}, {$category->peremennaya_2}, {$category->peremennaya_3}

 

Но включить вывод этих переменных в предложенную конструкцию не получается... Как можно обойти ситуацию?

 

Можно

 

1 вариант:

создать в таблице s_categories добавить поле name_cases 

в нем хранить сериализированные значения для названия категории

 

На бекенде их десериализировать и выводить массивом уже после plural

 

2 вариант

использовать решение от Мишани и получать дял каждого слова его падежи (из БД или из АПИ если в БД нет),

записать в массив и выводить после plural

 

...

 

1 подразумевает, что руками в админке нужно будет забить все значения

2 автоматом сам подтянет — в принципе можно подтягивать падежные слова и писать также сериализированным в БД


Изменено: Maksclub, 24.03.2018 - 17:52


#7 kazak

kazak
  • Пользователь
  • 54 сообщений
  • Заказчик
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2018 - 18:47

Можно

 

1 вариант:

создать в таблице s_categories добавить поле name_cases 

в нем хранить сериализированные значения для названия категории

 

На бекенде их десериализировать и выводить массивом уже после plural

 

2 вариант

использовать решение от Мишани и получать дял каждого слова его падежи (из БД или из АПИ если в БД нет),

записать в массив и выводить после plural

 

...

 

1 подразумевает, что руками в админке нужно будет забить все значения

2 автоматом сам подтянет — в принципе можно подтягивать падежные слова и писать также сериализированным в БД

 

Вы не верно поняли вопрос. В базе уже созданы нужные поля, и заполнены.

 

Вопрос в том, как это вывести в шаблоне сайта...

 

Не могу же я прописать:  

 

Найдено {$total_products_num} {$total_products_num|plural:'{$category->peremennaya_1}':'{$category->peremennaya_2}':'{$category->peremennaya_3}'} - так не работает...



#8 phukortsin

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

Опубликовано 24.03.2018 - 18:47

Найдено {$total_products_num} {$total_products_num|plural:$category->peremennaya_1:$category->peremennaya_2:$category->peremennaya_3}



#9 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 586 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2018 - 20:10

Вы не верно поняли вопрос. В базе уже созданы нужные поля, и заполнены.
 
Вопрос в том, как это вывести в шаблоне сайта...
 
Не могу же я прописать:  
 
Найдено {$total_products_num} {$total_products_num|plural:'{$category->peremennaya_1}':'{$category->peremennaya_2}':'{$category->peremennaya_3}'} - так не работает...

Внутри скобок не должно быть, одна в начале и одна в конце.

#10 kazak

kazak
  • Пользователь
  • 54 сообщений
  • Заказчик
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2018 - 22:30

Найдено {$total_products_num} {$total_products_num|plural:$category->peremennaya_1:$category->peremennaya_2:$category->peremennaya_3}

 

Огонь, работает! Благодарю!



#11 kossik

kossik
  • Пользователь
  • 36 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Санкт-Петербург

Опубликовано 15.05.2018 - 19:27

А подскажите пожалуйста текст вот этой функции: {$total_products_num}

Как мне вывести количество товара при поиске, либо в определенной категории?



#12 phukortsin

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

Опубликовано 15.05.2018 - 20:03

А подскажите пожалуйста текст вот этой функции: {$total_products_num}

 

Вопрос некорректный, ибо это не функция.

 

Как мне вывести количество товара при поиске, либо в определенной категории?

 

Уже дан в теме ответ, и даже в нескольких местах - #2, #3, #8...



#13 kossik

kossik
  • Пользователь
  • 36 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Санкт-Петербург

Опубликовано 16.05.2018 - 12:43

Вопрос некорректный, ибо это не функция.

 

 

Уже дан в теме ответ, и даже в нескольких местах - #2, #3, #8...

Ага, спасибо. Сначала думал, что это вручную написано было


Изменено: kossik, 16.05.2018 - 12:50





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

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