zatomant / combacart
Плагін для швидкого запуску інтернет магазину на Evolution CMS (EVO)
Requires
- php: >=7.4
- ext-gd: *
- ext-json: *
- intervention/image: ^2.7
- jaybizzle/crawler-detect: ^1.3
- nyholm/psr7: ^1.8
- php-http/discovery: ^1.20.0
- php-http/httplug: ^2.4
- plakidan/monobank-pay: ^0.2.1
- psr/log: ^1.1
- symfony/http-client: ^5.4
- symfony/mailer: ^5.4
- tecnickcom/tc-lib-barcode: ^1.17
- twbs/bootstrap: ^5.3
- twbs/bootstrap-icons: ^1.11
- twig/intl-extra: ^3.1
- twig/twig: ^3.1
- whichbrowser/parser: ^2.1
README
За допомогою CombaCart можна створити повноцінний інтернет-магазин чи маркетплейс (декілька Продавців на одному сайті) на базі EVO 1.4+ чи Evolution CMS 3.+, та керувати Замовленями покупців.
Важливо: для редагування розширених властивостей товарів використовуйте окремі плагіни чи модулі (multiTV та подібні)
Для Покупця:
- перегляд, додавання та редагування Товарів у Кошику, та подальше оформлення Кошика в Замовлення покупця
- сторінка Відстеження та Оплата замовлення
- трекінг відправлень Новапошта
- QR код з реквізитами оплати
- онлайн оплата через LiqPay або monobank
- перегляд історії Замовлень (персональний кабінет). Реєстрацію та авторизацію користувача робіть засобами Evolution CMS або через спеціалізований плагін, наприклад HybridAuth.
- підтримка багатомовності: Українська, Англійська.
Для Менеджера:
- керування Замовленнями покупців на окремій сторінці, за замовчуванням //ваш_сайт/comba
- перегляд, редагування, зміна статусів обробки та друк Замовлення
- відправлення текстових повідомлень через пошту, смс, текст для месенджерів.
Для Адміністратора:
- автоматичне прибирання Товару з Кошиків, якщо з товару знято Доступний для замовлення (редагування сторінки Товару в адмінці (evo))
- для кожного товару можна задати свого Продавця
- Продавець це окрема юридична особа або ФОП зі своїми налаштуваннями.
- при оформленні Кошика автоматично сформуються декілька Замовлень якщо Товари у кошику від різних Продавців (опціонально)
- якщо Покупець зробив оплату на сайті, буде оброблено callback від платіжного сервісу, та змінено статус замовлення на "Сповіщенно про оплату"
Мінімальна технічна конфігурація
PHP 7.4 та вище
Composer
EVO CMS 1.4+ або Evolution CMS 3.+ evolution-cms
Встановлення
Для нового встановлення рекомендую використовувати пакет CombaCart extras, якій підготовлено як файл для модуля Extras в Evolution CMS.
Щоб дізнатись подробиці перейдіть на сторінку CombaCart extras combacart-extras
Оновлення CombaCart
Через браузер:
відкрийте в браузері сторінку
ваш_сайт/assets/plugins/combacart/update/
Через консоль веб сервера:
виконайте в консолі
cd _коренева_тека_вашого_сайту_/assets/plugins/combacart/update/
php process.php
Ручне оновлення файлів:
- завантажте крайній реліз CombaCart github.com та перезапишіть файли в /assets/plugins/combacart
Файл composer.json містить перелік компонентів що використовується в CombaCart. ви можете прибрати зайві на ваш розсуд, залежності та модифікувати шаблони за потреби.
Налаштування
Рекомендую задати свій "секрет" у файлі /assets/custom/Config/secret.php або у файлі .env вашого змінного середовища.
Інакше секрет сформується автоматично і його значення буде залежіть від налаштувань серверу.
файл /src/Config/
- містить налаштування маркетплейсу за замовчуванням. не змінюйте в цій теці нічого.
тека /assets/custom/Config/
- містить файли з вашими перевизначеними налаштуваннями згідно Правила оновлення налаштувань
- наприклад, розмістить тут ваші налаштування маркетплейса та дані аутентифікації до стороніх сервисів:
- НоваПошта (на травень 2025 р., для трекінга відправлень Новапошта можна не застосовувати API ключ)
- LiqPay
- monobank (наразі, потребує тестування callback)
- смс провайдер AlphaSMS
- та інші
файл /src/Bundle/Standalone/Server.php
- містить клас автономного локального Comba сервера:
-
метод marketplace()
- повертає загальні налаштування інтернет магазину
-
метод sellers()
- повертає дані по Продавцях (публічні дані)
- Продавці крім основних параметрів містять посилання на Отримувачів оплат
-
метод payee()
- повертає дані Отримувачів оплат
- Отримувачі оплат це юридичні особи або ФОПм з варіантами оплат які вони підтримують
-
метод delivery()
- повертає перелік варіантів доставки
-
метод payment()
- повертає перелік варіантів оплат
Перші кроки після закінчення інсталяції та налаштувань
-
Необов'язковий пункт, але з ним легше.
На сторінці адміністрування CMS Evolution відкрийтиКонфігурація -> Дружні URL та відключить "Використовувати вкладені URL"
Використовувати вкладені URL: Ні -
При інсталяції через Extras combacart-extras будуть автоматично створені необхідні елементи (інакше доведеться створити це вручну), а саме :
-
шаблон для Сторінки товару goods_tmplt
-
шаблон для сторінки Оформлення замовлення checkout_tmplt
-
шаблон для інших сторінок blank_tmplt
-
tv
- goods_avail ознака чи доступний товар до замовлення
- goods_code актикул товару (sku)
- goods_price ціна товару
- goods_price_old стара ціна товару
- goods_weight вага товару
- goods_isnewproduct ознака "новий товар"
- goods_isondemand ознака "товар під замовлення"
- goods_seller Продавець товару
- goods_inbalances ознака залежності товару від залишків
- goods_images містить перелік зображень
- для frontend завжди повертається шлях до зображення з assets/cache
- якщо використовується multiTV, запуск сніпету
[[CombaFunctions? &fnct=`GetImage`]]
без параметрів повертає шлях до першого зображення - якщо запустити сніпет ось так
[[CombaFunctions? &fnct=`GetImage` &src=`[*goods_images*]`]]
поверне шлях [goods_images] враховуючі кеш та інші налаштування, наприклад розміри.
- goods_goods містить перелік видів товару (опціонально), використовує multiTV
-
сніпети:
- CombaHeader
- CombaFooter
- CombaHelper
- CombaFunctions
-
плагін CombaHelper
-
-
Створіть нову сторінку (документ), задайте їй шаблон goods_tmplt.
Це буде ваш перший товар. Код товару (артикул) має бути унікальним в контексті сторінки (документа).
Детально Товари -
Створіть сторінку з псевдонімом (alias) checkout та задайте їй шаблон checkout_tmplt
Це буде сторінка Оформлення замовлення. Якщо використовуєте інший псевдонім, то перевизначить 'PAGE_CHECKOUT' -
Опціонально: створіть сторінку з псевдонімом (alias) tnx на яку буде перенаправлено Покупця після створення замовлення. Якщо використовуєте інший псевдонім, то перевизначить 'PAGE_TNX' У разі відсутності такої сторінки буде перехвачено та оброблено modx event 'OnPageNotFound'
-
Створіть сторінку з псевдонімом (alias) cabinet, задайте шаблон blank_tmplt та вставте в вміст ресурсу
[!CombaFunctions? &fnct=`cabinet`!]
Детально Персональний кабінет покупця -
Опціонально: створіть сторінку з псевдонімом (alias) t - це буде сторінка відстеження замовлення. Детально Відстеження Замовлень
-
Опціонально: створіть сторінку з псевдонімом (alias) p - це буде сторінка з варіантами оплат замовлення. Детально Оплата Замовлень
Обробка замовлень
Після того як Покупець сформував Замовлення (Кошик з товарами відправлено до обробки менеджерами Макретплейса), його можна подивитись на сторінці керування. Доступ до сторінки має будь-якій користувач з ролю 'manager' що пройшов авторизацію через адміністративну сторінку EVO (http(s)://ваш_сайт/manager). Після авторизації, відкрийте сторінку керування замовленнями за посиланням http(s)://назва_сайту/comba На сторінці можна:
- передивлятись перелік замовлень за будь-який час
- вести пошук замовлень за номером, Замовником та його електронною поштою
- редагувати замовлення
- друкувати замовлення
- надсилати електронні листи, смс повідомлення та формувати тексти для подальшого використання в месенджерах.
Присутня можливість зміни мови та теми інтерфейсу.
Залежності та вимоги до налаштувань
-
якщо отримуєте помилку Class 'IntlDateFormatter' not found
встановіть та активуйте extension php_intl -
twig (необхідно) https://twig.symfony.com/
*наявно в composer.json
CombaCart використовує twig для шаблонів (після обробки даних парсером Modx/Evo) -
boostrap, bootstrap-icon (необхідно, опціонально) https://getbootstrap.com/
*наявно в composer.json
верстка CombaCart заснована на Bootstrap 5
якщо маєте наявну копію bootstrap змінить шляхи до вашого bootstrap в файлі snippetGoodsFooter.php -
bootbox.js (опціонально) bootboxjs
*наявно в пакеті інсталяції
для роботи з діалоговими формами bootstrap -
phpthumb
вирішив відмовитись від цього на користь більш активної в плані оновлення Intervention/image -
Intervention\Image (необхідно) github
*наявно в composer.json якщо користуєтесь іншим обробником зображень ніж phpthumb змінить клас ModxImage під свої потреби. -
multiTV (опціонально) multiTV
*встановлюється з extras- використовується для списків зображень в TV goods_images. замість списків можете використовувати TV goods_images як "строка" для одного зображення
- використовується для списків підвидів товару в TV goods_goods
Щоб прибрати глюк з позиціонуванням окна редагування властивостей зображень після встановлення multiTV
замініть у файлі assets/tvs/multitv/css/colorbox.css рядок 5#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z1-index:9999; overflow:hidden;}
на цей#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; overflow:hidden;}
-
cropper.js (опціонально)
*наявно в пакеті інсталяції CombaCart extras Опис по налаштуванню cropper multiTV використовується разом з multiTV для списків зображень -
venobox (опціонально) VenoBox
*наявно в пакеті інсталяції
використовується для роботи з діалоговими формами зображень -
reCaptcha (опціонально)
внесіть свої ключі для провайдера 'reCaptcha' у файл перевизначень /assets/custom/Config/provider.php якщо бажаете використовати капчу при перевірці оформлення замовлення
Інше
За замовчуванням, для підтримки багатомовності на сайті та в панелі керування замовленнями, використовується вбудований "перекладач". Детально про Багатомовність в шаблонах