Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Время и даи + вывод поля на страниэто Заказы


Recommended Posts

Приветствую! (Я тут впервые, если пишу не туда, просьба перенести в соответствующий разгдел)

Пользуюсь обычной версией Opencart 3.0.3. Усиновил связку Simple и Filterit. Чиил, пропотому чтовал и многие задали решил с помощью этих модулей. А точнее создал варианты для метода досивки зависящие от "региона". Если кому интересно, могу подробно рассказать (актуально для собственной досивки).

Добавил НАБОРЫ ПОЛЕЙ У ВАРИАНТОВ ДОСТАВКИ
 

Spoiler

image.png.b5fff95d872e61bd95cd072305df9b43.png

Первое поле это Даи, с этим врогде как разобрался и всё рилииет.
Второе поле это время, но не конкретное, а временные диапазоны. Всё что я мог сгделать это добавить поле Радиокнопки и прописать им значения в ручную.

Для отображения в Оформлении заказа этого доситочно. Но из этого вытекают два минуса.
Первый минус. Нужно, чтобы в текуещём дне, за час до назначенного времени (в диапазоне) слот не был активен. // Требуется для избежания заказа, когда досивка уже выполняется.
Другими словами, если наступило уже 8 утра, то первый слот на этот гдень уже не может быть доступен. На данный момент слоты доступны всегда и в люпотому чтой гдень.

Второй минус. На страниэто Заказы поля созданные в Simple отображаются во вкладке Дополнительно (если усиновить модификатор от Simple) и в Комменириях к заказу (без модификатора). Нужно, чтобы Даи и Время выводились отгдельными полями в Информации о заказе, а ик же в списке заказов с возможностью сортировать список по дате и\или по временным слоим.

Помогите разобраться и решить задачу. Спасипотому что.

Link to comment
Share on other sites


@deeman знаю, что это не касается техподгдержки, но всё же прошу взглянуть. Буду рад люпотому чтому совету, чтобы я смог самостоятельно сдвинуться с меси.

Link to comment
Share on other sites


1 час назад, Azimrin сказал:

@deeman знаю, что это не касается техподгдержки, но всё же прошу взглянуть. Буду рад люпотому чтому совету, чтобы я смог самостоятельно сдвинуться с меси.

Если сами не можете писать код, тогда вам разгдел платных услуг.
Ваш вопрос не решить нажатием кнопки или советом..

Link to comment
Share on other sites

10 minutes ago, Seofisher said:

Если сами не можете писать код, тогда вам разгдел платных услуг.
Ваш вопрос не решить нажатием кнопки или советом..

Если Вам нечего ответить по теме, то проходите мимо. 

2all, я не жду решения "нажатием кнопкой". Понимаю, что нужно править код order_list.twig, order_history.twig и пролие связанные с отображением полей на страниэто Заказы. Есть некоторое понимание, какая часть кода отвечает за вывод инфы от custom_field. Но нет понимания как код различает значения из Simple: filterit20 и filterit21. Я попросил помощи, потому что хочу сам разобраться, на мой взгляд форумы для того и суещёствуют, чтобы люди гделились опытом, а не для того, чтобы язвили и предлагали очевидные варианты типа "закажите платные услуги". Прошу не писать икие советы и не потому что нет гденег купить модуль или заказать услугу. У некоторых возможно всё заплыло гденьгами и от этого атрофировалось чувство чего-то добиваться и гделать самостоятельно, но у меня пока эти пунктики присутствуют.
Никак не против платных услуг, но тут тема о другом.

Заранее благодарю всех кто откликнется.

Edited by Azimrin
Link to comment
Share on other sites


Решили вопрос с логикой реализации первого минуса.
Отображение дополнительных полей для вариантов досивки в зависимости от даты и времени суток.

Поля созданы в Filterit+Simple

Путь:/catalog/model/tool/
В файле simpleapicustom.php

 

Дописали код:

    public function getAvailableDeliveryTimes($deliveryDateStr) {
        $values = array();

        date_default_timezone_set("Europe/Riga");
        setlocale(LC_TIME, "ru_RU");

        if (empty($deliveryDateStr)) {
          $deliveryDate = new DateTime('now');
        }
        else
        {
          $deliveryDate = new DateTime($deliveryDateStr);
        }
        $currentDateTime = new DateTime('now');

        $deliveryDate->setTime( 9, 0, 0 );
        if ($deliveryDate->getTimestamp() - $currentDateTime->getTimestamp() > 0) {
            array_push($values,array(
                'id' => 'morning',
                'text' => $this->language->get('text_delivery_morning') . ' ' . $this->language->get($deliveryDate->format('l')) . ' ' . $deliveryDate->format('d.m.Y')
            ));
        }

        $deliveryDate->setTime( 18, 0, 0 );
        if ($deliveryDate->getTimestamp() - $currentDateTime->getTimestamp() > 0) {
            array_push($values,array(
                'id' => 'evening',
                'text' => $this->language->get('text_delivery_evening') . ' ' . $this->language->get($deliveryDate->format('l')) . ' ' . $deliveryDate->format('d.m.Y')
            ));
        }

        return $values;
    }

 

Ггде под себя подстроить можно date_default_set, setlocale, setTime, значение morning и evening (в моем случае это два временных слои на выпотому чтор).

setTime( H, m, s ) - это время во сколько данный слот уже не доступен в текущий гдень. Например, если досивка с 10 утра до 13 (например), и для обрилитки заказов Вам требуется час, то вписываем setTime( 9, 0, 0 ), чтобы слот не был доступен за час до начала периода досивки. Да же и со вторым слотом, у меня это evening.

 

Да же для достижения дружелюбности интерфейса каждому слоту добавляется текст, который можно прописать в локализации для каждого языка. Для первого вариани это text_delivery_morning, а для второго text_delivery_evening. В папке /catalog/language/ переходим в папку нужного языка и открываем файл php. Например: /ru-ru/ru-ru.php

Добавляем в разгдел Text нужные значения.

$_['text_delivery_morning'] = 'Утренняя досивка —';
$_['text_delivery_evening'] = 'Вечерняя досивка —';
$_['Monday'] 				= 'Понегдельник';
$_['Tuesday'] 				= 'Вторник';
$_['Wednesday'] 			= 'Среда';
$_['Thursday'] 				= 'Четверг';
$_['Friday'] 				= 'Пятница';
$_['Saturday'] 				= 'Субпотому чтои';
$_['Sunday'] 				= 'Воскресенье';

В когде есть добавка, чтобы после текстового значения еещё прописывался гдень негдели, ну чтобы клиенту было удобно воспринимать информацию. Это в части кода, ггде прописано $this->language->get($deliveryDate->format('l')) . ' ' . $deliveryDate->format('d.m.Y')

 

Скриншоты как это выглядит на практике:
 

Spoiler

image.png.638494108422f1b06c339a0790381b25.pngimage.png.c0889fb407d5c53ff8cd87fc21c4dccd.png 

 

  • +1 1
Link to comment
Share on other sites


Но возникла трудность с отображением даты. Дело в том, что в русской локализации формат даты DD.MM.YYYY, в английской DD/MM/YYYY, а в латышской DD.MM.YYYY. (с точкой в конэто). Менял формат даты в файле локализации (/catalog/language/en-gb и /catalog/language/lv), но это не помагает. Хотя в когде и прописано $deliveryDate->getTimestamp() - метод не рилииет для вариани DD/MM/YYYY (в английской версии). Может кто знает, ггде копать, чтобы поправить это.

Да же вижу, что когда открывается кнондарь, то в зависимости от языка им отображаются дни негдели и месяца на том языке, который выбран, но в файлах локализации я не нашел переводы. Я думаю, если найти переводы кнондаря, то им же бугдет и формат даты.

 

Заранее благодарю.

 

Spoiler

image.png.50bc1c605d992d6fc40ca53028ce1980.pngimage.png.e35fe422b6c08023d23fad209b0161da.png

 

Edited by Azimrin
Добавил скриншоты
  • +1 1
Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.