Склонение месяцев

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 746
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Склонение месяцев

Сообщение Fait »

artyzz писал(а): 02 апр 2024, 08:04 Зачем какими либо функциями нагружать скрипт, когда вопрос решается заменой одной строчки в языковом файле?)
Но ведь нужно использовать и просто название месяца, и склонение, и с маленькой буквы, и с большой.
Действительно, наверное лучше создать кучу дополнительных переменных в языковом файле. :D

Причём один фиг, функция склонения понадобится, даже если она будет частью системы. И она также будет вызываться при отображении даты.
Так что, нет никакого профита в том, чтобы создавать переменные в языковом файле.
По нагрузке никакой разницы, что вы вызовете функцию из ядра или функцию из Пользовательского PHP.
nruslan2
Сообщения: 2414
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:

Re: Склонение месяцев

Сообщение nruslan2 »

менять в файле языка не стоит так как например при использовании графического отчета в фильтрах мы тогда будем видеть не "Январь", а "Января", что будет бросаться в глаза!
artyzz
Сообщения: 113
Зарегистрирован: 22 апр 2020, 23:28
Имя: Сергей
Откуда: Москва

Re: Склонение месяцев

Сообщение artyzz »

nruslan2 писал(а): 02 апр 2024, 13:10 менять в файле языка не стоит так как например при использовании графического отчета в фильтрах мы тогда будем видеть не "Январь", а "Января", что будет бросаться в глаза!
Действительно, про отчеты не подумал
artyzz
Сообщения: 113
Зарегистрирован: 22 апр 2020, 23:28
Имя: Сергей
Откуда: Москва

Re: Склонение месяцев

Сообщение artyzz »

Fait писал(а): 17 янв 2024, 21:53 Итак, вот таким кодом я пользуюсь (вставляйте в пользовательский PHP):

Код: Выделить всё

/*
В $dt отправляем дату в формате UNIXTIME
Вызываем функцию вот так:
$text = get_month_name($dt,'normal',0); // Январь
$text = get_month_name($dt,'skl',0); // Января
$text = get_month_name($dt,'normal',1); // январь
$text = get_month_name($dt,'skl',1); // января
*/
function get_month_name($dt,$type,$small) { // Получение названия месяца из даты
  $x = date("n",$dt);
  if ($type == 'normal') {
    switch ($x) {
      case 1: $z = 'Январь'; break;
      case 2: $z = 'Февраль'; break;
      case 3: $z = 'Март'; break;
      case 4: $z = 'Апрель'; break;
      case 5: $z = 'Май'; break;
      case 6: $z = 'Июнь'; break;
      case 7: $z = 'Июль'; break;
      case 8: $z = 'Август'; break;
      case 9: $z = 'Сентябрь'; break;
      case 10: $z = 'Октябрь'; break;
      case 11: $z = 'Ноябрь'; break;
      case 12: $z = 'Декабрь'; break;
    }
  }
  else if ($type == 'skl') {
    switch ($x) {
      case 1: $z = 'Января'; break;
      case 2: $z = 'Февраля'; break;
      case 3: $z = 'Марта'; break;
      case 4: $z = 'Апреля'; break;
      case 5: $z = 'Мая'; break;
      case 6: $z = 'Июня'; break;
      case 7: $z = 'Июля'; break;
      case 8: $z = 'Августа'; break;
      case 9: $z = 'Сентября'; break;
      case 10: $z = 'Октября'; break;
      case 11: $z = 'Ноября'; break;
      case 12: $z = 'Декабря'; break;
    }
  }
  if ($small == 1) {
    $z = lcfirst($z);
  }
  return $z;
}
Можно подробнее? Получается мы забираем дату с поля "Дата вызова" (например), php оно обрабатывается, и потом нужно указать куда возвращать результат? (т.е. создать новое текстовое поле например "Дата вызова 2") Получается что у нас появляется доп поле с датой, не редактируемое. У меня например (как и у многих видимо) Дата (календарик) выведена везде в списки, подключена функция подсветки просроченой даты лиюо приближайщейся даты. Получается, вместо них в список нужно вывести просто текстовое поле "Дата" в которое вносится значение после функции? Получается мы теряем возможность отредактировать Дату в списке и теряем подсветку.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 746
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Склонение месяцев

Сообщение Fait »

IMG_20240402_195828.jpg
Всё легко, когда знаешь как)
На этом скриншоте нет ни одного поля дата.
И подсветка есть.
Поле, где написано 6 апреля - это поле PHP код, которое забирает значение даты с оригинального поля, пропускает через функцию, потом проверяет условия вывода и потом выводит блок с датой.

Благодаря этому, есть возможность настроить сколько угодно условий расцветки и форматирования даты.
А стандартным функционалом вы можете лишь назначить 2 цвета по условиям "несколько дней до указанной даты" и ещё один цвет "просроченные даты".
Но вам никак не удастся таким образом назначить цвет, который будет срабатывать после указанной даты, скажем, через 7 дней.
PHP обеспечивает гибкость в этом вопросе)
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 746
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Склонение месяцев

Сообщение Fait »

IMG_20240402_200825.jpg
Вот здесь то же поле Дата, но здесь оно берёт значения уже из двух полей и красиво их выводит.

Вообще, оно у меня настроено так, что в зависимости от типа заказа и статуса, оно показывает данные из 4 полей с датами: Дата принятия, Срок исполнения, Дата отправления и Дата доставки.
На каком этапе какие даты нужны - те и показывает.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 746
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Склонение месяцев

Сообщение Fait »

Кстати, сейчас только заметил, что у меня на этом скрине только 3 стандартных поля: Статус (самый верхний), Заголовок и кнопка Действие.
Остальные поля - PHP код.

Зато получается довольно компактно и органично))
Ответить