Страница 3 из 3
Re: Склонение месяцев
Добавлено: 02 апр 2024, 12:33
Fait
artyzz писал(а): 02 апр 2024, 08:04
Зачем какими либо функциями нагружать скрипт, когда вопрос решается заменой одной строчки в языковом файле?)
Но ведь нужно использовать и просто название месяца, и склонение, и с маленькой буквы, и с большой.
Действительно, наверное лучше создать кучу дополнительных переменных в языковом файле.
Причём один фиг, функция склонения понадобится, даже если она будет частью системы. И она также будет вызываться при отображении даты.
Так что, нет никакого профита в том, чтобы создавать переменные в языковом файле.
По нагрузке никакой разницы, что вы вызовете функцию из ядра или функцию из Пользовательского PHP.
Re: Склонение месяцев
Добавлено: 02 апр 2024, 13:10
nruslan2
менять в файле языка не стоит так как например при использовании графического отчета в фильтрах мы тогда будем видеть не "Январь", а "Января", что будет бросаться в глаза!
Re: Склонение месяцев
Добавлено: 02 апр 2024, 14:36
artyzz
nruslan2 писал(а): 02 апр 2024, 13:10
менять в файле языка не стоит так как например при использовании графического отчета в фильтрах мы тогда будем видеть не "Январь", а "Января", что будет бросаться в глаза!
Действительно, про отчеты не подумал
Re: Склонение месяцев
Добавлено: 02 апр 2024, 14:47
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") Получается что у нас появляется доп поле с датой, не редактируемое. У меня например (как и у многих видимо) Дата (календарик) выведена везде в списки, подключена функция подсветки просроченой даты лиюо приближайщейся даты. Получается, вместо них в список нужно вывести просто текстовое поле "Дата" в которое вносится значение после функции? Получается мы теряем возможность отредактировать Дату в списке и теряем подсветку.
Re: Склонение месяцев
Добавлено: 02 апр 2024, 18:07
Fait
Всё легко, когда знаешь как)
На этом скриншоте нет ни одного поля дата.
И подсветка есть.
Поле, где написано 6 апреля - это поле PHP код, которое забирает значение даты с оригинального поля, пропускает через функцию, потом проверяет условия вывода и потом выводит блок с датой.
Благодаря этому, есть возможность настроить сколько угодно условий расцветки и форматирования даты.
А стандартным функционалом вы можете лишь назначить 2 цвета по условиям "несколько дней до указанной даты" и ещё один цвет "просроченные даты".
Но вам никак не удастся таким образом назначить цвет, который будет срабатывать после указанной даты, скажем, через 7 дней.
PHP обеспечивает гибкость в этом вопросе)
Re: Склонение месяцев
Добавлено: 02 апр 2024, 18:09
Fait
Вот здесь то же поле Дата, но здесь оно берёт значения уже из двух полей и красиво их выводит.
Вообще, оно у меня настроено так, что в зависимости от типа заказа и статуса, оно показывает данные из 4 полей с датами: Дата принятия, Срок исполнения, Дата отправления и Дата доставки.
На каком этапе какие даты нужны - те и показывает.
Re: Склонение месяцев
Добавлено: 02 апр 2024, 18:14
Fait
Кстати, сейчас только заметил, что у меня на этом скрине только 3 стандартных поля: Статус (самый верхний), Заголовок и кнопка Действие.
Остальные поля - PHP код.
Зато получается довольно компактно и органично))