zatomant/combacart

Плагін для швидкого запуску інтернет магазину на Evolution CMS (EVO)

dev-main 2025-03-25 21:38 UTC

This package is auto-updated.

Last update: 2025-03-25 21:39:21 UTC


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.+ github.com

Встановлення

Для нового встановлення рекомендую використовувати пакет CombaCart extras, якій підготовлено як файл для модуля Extras в Evolution CMS.
Щоб дізнатись подробиці перейдіть на сторінку CombaCart extras github.com

Оновлення CombaCart

через composer:
виконайте в консолі

cd _коренева_тека_вашого_сайту_/assets/plugins/combacart

composer update

ручне оновлення файлів:

  • завантажте крайній реліз CombaCart github.com та перезапишіть файли в /assets/plugins/combacart .

Файл composer.json містить перелік компонентів що використовується в CombaCart. ви можете прибрати зайві на ваш розсуд, залежності та модифікувати шаблони за потреби.

Налаштування

файл /src/Config/marketplace.php

  • містить налаштування маркетплейсу за замовчуванням. не змінюйте тут нічого.

файл /assets/custom/Config/marketplace.php

  • містить ваші налаштування *
  • редагуйте/додавайте в цьому файлі що забажаєте *
  • налаштування маркетплейсу та дані аутентифікації до стороніх сервисів, наприклад:
    • НоваПошта
    • LiqPay
    • monobank (потребує тестування)
    • смс провайдер
    • та інші

файл /src/Bundle/BuildInServer/Server.php

  • містить методи та масиви з даними, і саме ці дані редагуйте під свої потреби:
  1. метод marketplace()

    • повертає загальні налаштування інтернет магазину/маркетплейсу (формальна різниця між ІМ та М: ІМ може мати одного Продавця, а маркетплейс може зберігати декілька Продавців)
  2. метод sellers()

    • повертає дані по Продавцях (публічні дані)
    • Продавці крім основних параметрів містять посилання на Отримувачів оплат
  3. метод payee()

    • повертає дані Отримувачів оплат
    • Отримувачі оплат це юридичнф особи чи ФОПм з типами оплат які вони підтримують
  4. метод delivery()

    • повертає перелік типів доставок
  5. метод payment()

    • повертає перелік типів оплат

Перші кроки після закінчення інсталяції та налаштувань

  1. При інсталяції через Extras github.com будуть автоматично створені необхідні елементи (інакше доведеться створити це вручну), а саме :

    • шаблон для сторінки товару goods_tmplt

    • шаблон для сторінки оформлення замовлення checkout_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, запуск сніпету [[GoodsImage]] без параметрів повертає шлях до першого зображення
      • якщо запустити сніпет ось так [[GoodsImage? &imgsrc=`[*goods_images*]`]] поверне шлях [goods_images] враховуючі кеш та інші налаштування, наприклад розміри.
      • goods_goods містить перелік видів товару (опціонально), використовує multiTV
    • сніпети, в тому числі:

      • snippetOrderPay для показу сторінки з варіантами оплат
      • snippetOrderTracking для показу статусу обробки замовлення
  2. До шаблона goods_tmplt мають бути прив'язані TV goods_avail, goods_code, goods_price, goods_price_old, goods_weight, goods_isnewproduct, goods_isondemand, goods_seller

  3. Створіть нову сторінку (документ), задайте їй шаблон goods_tmplt. Це буде ваш перший товар. Код товару (артикул) має бути унікальним в контексті сторінки (документа).

  4. Створіть сторінку з псевдонімом (alias) checkout та задайте їй шаблон checkout_tmplt . Це буде сторінка оформлення замовлення. якщо використовуєте інший псевдонім то внесіть його в константу COMBAMODX_PAGE_CHECKOUT в файлі /src/Config/config.php

  5. Створіть сторінку з псевдонімом (alias) tnx на яку буде перенаправлено користувача після створення замовлення. якщо використовуєте інший псевдонім внесіть його в константу COMBAMODX_PAGE_TNX в файлі /src/Config/config.php у разі відсутності такої сторінки буде перехвачено OnPageNotFound та відображенно текст з /src/Bundle/Modx/Cart/templates/chunk-CheckoutTnx

  6. Створіть сторінку з псевдонімом (alias) cabinet та задайте їй вміст ресурсу [[CombaHelper? &action=`cabinet`]].
    Ця сторінка відображує історію замовлень покупця.

Обробка замовлень

Після того як Покупець сформував Замовлення (Кошик з товарами відправлено до обробки менеджерами Макретплейса), його можна подивитись на сторінці керування. Доступ до сторінки має будь-якій користувач з ролю 'manager' що пройшов авторизацію через адміністративну сторінку EVO (http(s)://ваш_сайт/manager). Відкрити сторінку керування замовленнями можна за посиланням http(s)://назва_сайту/comba На сторінці керування можна:

  • передивлятись перелік замовлень за будь-який час
  • вести пошук замовлень за номером, Замовником та його електронною поштою
  • редагувати замовлення
  • друкувати замовлення
  • надсилати електронні листи, смс повідомлення та формувати тексти для подальшого використання в месенджерах

Присутня можливість зміни мови та теми інтерфейсу.

Залежності та вимоги до налаштувань

  1. якщо отримуєте помилку Class 'IntlDateFormatter' not found
    встановіть та активуйте extension php_intl

  2. twig (необхідно) https://twig.symfony.com/
    *наявно в composer.json
    CombaCart використовує twig для шаблонів (після обробки даних парсером Modx/Evo)

  3. boostrap,bootstrap-icon (необхідно,опціонально) https://getbootstrap.com/
    *наявно в composer.json
    верстка CombaCart заснована на Bootstrap 5

якщо маєте наявну копію bootstrap змінить шляхи до вашого bootstrap в файлі snippetGoodsFooter.php

  1. bootbox.js (опціонально) github.com
    *наявно в пакеті інсталяції
    для роботи з діалоговими формами bootstrap

  2. phpthumb (необхідно) *встановлюється з extras якщо користуєтесь іншим обробником зображень ніж phpthumb змінить файл snippetGetImage.php під свої потреби.

  3. claviska\SimpleImage (опціонально) github.com
    *наявно в composer.json
    composer require claviska/simpleimage

  4. multiTV (опціонально) github.com
    *встановлюється з extras
    використовується для списків зображень в TV goods_images. замість списків зображень можете використовувати TV goods_images як "строка" для единого зображення. використовується для списків підвидів товару в TV goods_goods. якщо вам це не потрібно - не заповнюйте.

  5. cropper.js (опціонально)
    *наявно в пакеті інсталяції
    опис по налаштуванню cropper github.com

  6. venobox (опціонально) github.com
    *наявно в пакеті інсталяції
    для роботи з діалоговими формами зображень

  7. reCaptcha (опціонально)
    заповніть параметри assets/custom/Config/custom.php якщо бажаете використовати капчу при перевірці оформлення замовлення 'reCaptcha' => array( 'key' => '', 'secret' => '', 'url' => 'https://www.google.com/recaptcha/api/siteverify', )

Інше

За замовчуванням для підтримки багатомовності на сайті та в панелі керування замовленнями використовується вбудований "перекладач", що використовує клас Options. Метод Options::detectLanguage() визначає поточну мову та керує завантаженням перекладів. Для прикладу файл що містить переклад на українську мову /assets/lang/uk.php

На своєму сайті ви можете використовувати інші компоненти для підтримки багатомовності, наприклад sLang або bLang.
Після встановлення сторонніх "перекладачів" внесіть зміни в шаблони на сайті.