Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/zapalm/boxberrydelivery-js-plugin

JS-плагин для интеграции функций модуля BoxberryDelivery на страницу чекаута PrestaShop.
https://github.com/zapalm/boxberrydelivery-js-plugin

boxberry prestashop-module

Last synced: 2 days ago
JSON representation

JS-плагин для интеграции функций модуля BoxberryDelivery на страницу чекаута PrestaShop.

Awesome Lists containing this project

README

        

# JS-плагин для интеграции модуля BoxberryDelivery со страницей чекаута PrestaShop

## О JS-плагине
Этот JS-плагин модуля [Доставка с помощью Boxberry](https://prestashop.modulez.ru/ru/shipping-and-pickup/34-delivery-by-boxberry.html).
Решил наконец опубликовать его на GitHub, чтобы владельцы своих сайтов на PrestaShop своими силами могли дорабатывать JS-плагин,
в том числе, под свою конкретную тему (которые, обычно, шаблонные, да чем-то отличаются), а затем, по желанию, вносить свои
доработки в этот репозиторий, чтобы изменения вошли в релиз модуля. За изменениями во всевозможных темах не уследить одному,
да и какие-то недоработки в JS-плагине тоже могут быть. Таким образом, при такой коллективной работе, всем будет хорошо.
Но это в теории - я сильно сомневаюсь, что кто-то это будет делать - в общем, эксперимент пошёл.

## О реализации JS-плагина
**Код полностью документирован - см. JSDoc.** Проблема интеграции виджета Boxberry по выбору ПВЗ с чекаутом PrestaShop в том,
что у PrestaShop нет никакого API во фронтэнде, чтобы можно было взаимодействовать модулю доставки со страницей оформления
заказа. Отсюда, приходится модифицировать страницу заказа на лету через DOM на JS. Отсюда, проблема сделать "гладкую" работу
для отдельной темы сайта, потому что она может чем-то отличаться от стандартной, для которой сделана интеграция. Ещё часто устанавливают
отдельные модули, которые меняют страницу оформления заказа (чекаут) на свою - у них всех тоже нет возможности нормальной
интеграции (раньше совсем не было, но в году 2021 у одного увидел что-то близкое к требуемому, в итоге, не опробовал, т.к.
запросы на интеграцию приходили только под старые версии этого модуля, в котором не было этой возможности). В моей реализации,
интеграция сделана для стандартных чекаутов PrestaShop 1.5, 1.6, 1.7, 8; для тем сайта, которые очень близки к стандартной и
для двух сторонних модулей (о них - ниже).

**JS-плагин имеет несколько параметров, которые можно настроить под свою тему:**
- `enableDataCheckBeforeSubmit`. По-умолчанию опция выключена (см. описание функции в коде), т.к. может вызывать проблему
перехода к оплате в не полностью поддерживаемых чекаутах. Если нужна эта функция, то можете включить опцию и протестировать,
как она будет работать в вашей теме.
- `isModifiedCheckout`. Включается автоматически, если тема Panda или Transformer. Когда опция включена - обработка JS
немного отличается, т.к. в этих темах отличается вёрстка страницы оформления заказа от вёрстки стандартной темы. По такому
примеру реализации вы можете добавлять собственные обработки под свою тему, например, если она у вас стандартная, но что-то
слегка исправлено/кастомизированно.

**Остальные параметры менять не нужно, например, эти параметры, которые включаются автоматически, если установлен тот или иной
модуль оформления заказа (заменяют страницу заказа на свою) или, если определена стандартная тема PrestaShop:**
- `modulePresTeamShop`. Модуль "One Page Checkout PrestaShop от PresTeamShop".
- `moduleSuperCheckout`. Модуль "SuperCheckout от Knowband".
- `PS15`, `PS16`, `PS17`, `PS8`. Стандартные чекауты указанных версий PrestaShop.

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

## Инструкция по применению
- Склонирорвать репозиторий (или форкнуть сначала, если будете подавать свои исправления в этот репозиторий).
- Внести изменения в код, нужные для вашей темы.
- JS-плагин разместить в теме сайта (не заменять оригинальный файл в модуле). У каждой версии PrestaShop путь для размещения
переопрделённого файла отличается (обратитесь к официальной документации).
- Если всё хорошо и ваши изменения пригодятся другим пользователям модуля, сделайте pull-request в этот репозиторий.