Автор Тема: Формат даты  (Прочитано 971 раз)

13 Февраль 2020, 22:51:03
  • Новичок
  • *
  • Сообщений: 20
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем доброго времени суток. Подскажите пожалуйста, как поменять местами "год" и "день" при создании клиента магазина? И еще, хотелось бы что бы календарь был по-русски - начинался с понедельника и на русском языке.
Версия движка 1.7.6.3
14 Февраль 2020, 00:27:38
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В админке в локализации проверьте настроки Временная зона - Europe/Moscow.
И хостинг должен быть настроен на Временная зона - Europe/Moscow.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
14 Февраль 2020, 09:17:07
Ответ #2
  • Новичок
  • *
  • Сообщений: 20
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В админке в локализации проверьте настроки Временная зона - Europe/Moscow.
И хостинг должен быть настроен на Временная зона - Europe/Moscow.
Настройки админки тут не помогут, сервер тоже не причем. В 1.6 таких проблем нет, а вот в 1.7 даже после исправления Y-m-d на d-m-Y, проблема все равно остается.
14 Февраль 2020, 11:44:35
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Мржно в tpl файлах поменять
{$smarty.now|date_format:"%D"}Будет показывать 10/19/19
14 Февраль 2020, 11:48:42
Ответ #4
  • Новичок
  • *
  • Сообщений: 20
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Мржно в tpl файлах поменять
{$smarty.now|date_format:"%D"}Будет показывать 10/19/19
Если вам не сложно, можете подсказать полный путь к файлу и какой фаил редактировать?
14 Февраль 2020, 12:01:19
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В админке в локализации проверьте настроки Временная зона - Europe/Moscow.
И хостинг должен быть настроен на Временная зона - Europe/Moscow.
Настройки админки тут не помогут, сервер тоже не причем. В 1.6 таких проблем нет, а вот в 1.7 даже после исправления Y-m-d на d-m-Y, проблема все равно остается.
У вас измененая версия prestashop?
В базовом пакете класс /classes/Language.php
Формат даты по умолчанию
/** @var string date format http://http://php.net/manual/en/function.date.php with the date only */
public $date_format_lite = 'Y-m-d';
/** @var string date format http://http://php.net/manual/en/function.date.php with hours and minutes */
 public $date_format_full = 'Y-m-d H:i:s';
При выборе языка (с условием того что выбранная локаль установлена на сервере) в класса Tools
/**
     * Display date regarding to language preferences.
     *
     * @param string $date Date to display format UNIX
     * @param int $id_lang Language id DEPRECATED
     * @param bool $full With time or not (optional)
     * @param string $separator DEPRECATED
     *
     * @return string Date
 */
public static function displayDate($date, $id_lang = null, $full = false, $separator = null)
{
        if ($id_lang !== null) {
            Tools::displayParameterAsDeprecated('id_lang');
        }
        if ($separator !== null) {
            Tools::displayParameterAsDeprecated('separator');
        }

        if (!$date || !($time = strtotime($date))) {
            return $date;
        }

        if ($date == '0000-00-00 00:00:00' || $date == '0000-00-00') {
            return '';
        }

        if (!Validate::isDate($date) || !Validate::isBool($full)) {
            throw new PrestaShopException('Invalid date');
        }

        $context = Context::getContext();
        $date_format = ($full ? $context->language->date_format_full : $context->language->date_format_lite);

        return date($date_format, $time);
}
По вашему примеру, дата день рождения, в классе CustomerFormatter.php
if ($this->ask_for_birthdate) {
            $format['birthday'] = (new FormField())
                ->setName('birthday')
                ->setType('text')
                ->setLabel(
                    $this->translator->trans(
                        'Birthdate',
                        [],
                        'Shop.Forms.Labels'
                    )
                )
                ->addAvailableValue('placeholder', Tools::getDateFormat())
                ->addAvailableValue(
                    'comment',
                    $this->translator->trans('(E.g.: %date_format%)', array('%date_format%' => Tools::formatDateStr('31 May 1970')), 'Shop.Forms.Help')
                );
}
Т.е. формат вывода даты зависит от настроек языка.
У меня prestashop 1.7.6.1 выбран русский для админки, на сервере установлена локаль utf8_Ru.
Все даты на русском.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
14 Февраль 2020, 12:04:02
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Мржно в tpl файлах поменять
{$smarty.now|date_format:"%D"}Будет показывать 10/19/19
Если вам не сложно, можете подсказать полный путь к файлу и какой фаил редактировать?
Для каждой страницы свой файл tpl. Чтобы на всем сайте была правильная дата вам нужно найти во всех tpl вывод даты и добавить функцию форматирования.
14 Февраль 2020, 14:27:31
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 16676
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
...
Для формы клиента на сайте ок, а в админке ничего не меняет.
14 Февраль 2020, 15:03:11
Ответ #8
  • Новичок
  • *
  • Сообщений: 20
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
На локалке зменил все Y-m-d на d-m-Y Ничего не изменилось. попробовал найти все записи YYYY-MM-DD и заменить на DD-MM-YYYY, в итоге ошибка 500. Вернул обратно...Вообщем не знаю куда копать((( Что интересно, что в 1.6 таких проблем нет..Там все четко. И дата выглядит по формату "01 января 2000 г." т.е. месяц прописью. А вот 1.7 что то этим огорчил
14 Февраль 2020, 15:20:07
Ответ #9
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
На сайте выводит дату по формату языка. Проверено в prestashop 1.7.0 - 1.7.6.
В админке не везде учитывает формат языка.
Например, для формы клиента в файле
/src/PrestaShopBundle/Form/Admin/Sell/Customer/CustomerType.php
можно поменять формат
->add('birthday', BirthdayType::class, [
        'required' => false,
        /*'format' => 'yyyy MM dd',*/
        'format' => 'dd MM yyyy',
        'input' => 'string',
])
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
14 Февраль 2020, 15:28:01
Ответ #10
  • Новичок
  • *
  • Сообщений: 20
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
На сайте выводит дату по формату языка. Проверено в prestashop 1.7.0 - 1.7.6.
В админке не везде учитывает формат языка.
Например, для формы клиента в файле
/src/PrestaShopBundle/Form/Admin/Sell/Customer/CustomerType.php
можно поменять формат
->add('birthday', BirthdayType::class, [
        'required' => false,
        /*'format' => 'yyyy MM dd',*/
        'format' => 'dd MM yyyy',
        'input' => 'string',
])

Вот именно это я и искал, добрый ты человек!))) Спасибо большое!
14 Февраль 2020, 15:34:52
Ответ #11
  • Новичок
  • *
  • Сообщений: 20
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А как тут поменять? :-[
14 Февраль 2020, 15:50:41
Ответ #12
  • Фрилансер
  • *
  • Сообщений: 176
  • Репутация: +0/-0
    • Просмотр профиля
14 Февраль 2020, 16:36:55
Ответ #13
  • Новичок
  • *
  • Сообщений: 20
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
https://github.com/PrestaShop/PrestaShop/pull/13036/files

Спасибо, очень пригодилось. Вот только в товарах есть моменты где еще формат по старому остался(( где искать? сам менять уже боюсь((
14 Февраль 2020, 16:37:25
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Для спец цен -/src/PrestaShopBundle/Controller/Admin/SpecificPriceController.php метод formatForDatePicker
return $dateTime->format('d-m-Y');