Ставить поверх свежей установки Evolution CMS CE 3.1.30
Выполните команды из директории /core:
- Установка пакета
php artisan package:installrequire roilafx/shop "*"
Иногда тут возникает ошибка, в таком случае нужно выполнить composer dump-autoload, чтобы появились миграции и можно было публиковались скрипты
- Выполнение миграций
php artisan migrate
- Публикация стилей и скриптов
php artisan vendor:publish --provider="roilafx\Install\InstallServiceProvider"
- Импорт данных
php artisan site:full-import --all --clear-first
- Отредактировать
/core/custom/composer.json, добавив автозагрузку
"autoload": {
"psr-4": {
"EvolutionCMS\\Shop\\": "packages/shop/src/"
}
}- Обновить composer
composer dump-autoload
- Очистить кеш любым удобным вам способом:
- консоль
- административная панель
- Каталог и фильтрация товаров
- Корзина и оформление заказов
- Поиск по сайту
- Личный кабинет
- Commerce
- Commerce-history
- AESearch (evoSearch)
- ClientSettings
- EditDocs
- eFilter
- MultiTV
- FormSender (Formlister)
- TemplatesEdit
- TinyMCE4 (не используется, можно включить в настройках)
- DocLister
- Multicategories (не используется)
Стили настраиваются в двух местах:
resources/css/main.css- глобальные стили, используемые на нескольких страницах- Blade-файлы в секции
styles
Для упрощения разработки вместо фотографий использовались иконки из fontawesome-free-7.2.0-web.
Весь JavaScript находится в Blade-файлах в секции scripts. Его немного, при желании можно вынести в отдельный файл или удалить.
cart.blade.php: вызов клиентского обработчика FormSender и дополнительные функции для модального окна оплаты заказаcatalog.blade.php: подключение jQuery, необходимого для работы формы фильтрацииitem.blade.php: переключение табов и изменение количества товараpagetext.blade.php: переключение изображенийprofile.blade.php: переключение тобов
Используется 4 контроллера:
- BaseController - получение элементов, используемых на большинстве страниц
- CatalogController - работа с компонентом eFilter
- PageController - универсальная текстовая страница
- ShopController - работа с корзиной
- UserControler - для работы с личным кабинетом
Получает из traits:
- Верхнее меню
- Нижнее меню
- Информацию для пользователей из
ClientSettings - Мини-корзину
- Хлебные крошки
- Если пользователь авторизорован, то получает
Name,Email,Phone
Работает с сервисом eFilter через интерфейс FilterServiceInterface.
Универсальный контроллер, выполняющий следующие задачи:
- Получение информации для стартовой страницы (категории с меткой "хит" и новые позиции)
- Получение данных для страницы "Спасибо" (необходимые плейсхолдеры)
Предоставляет необходимые для корзины и оплаты данные:
- Корзину
- Способы оплаты
- Методы доставки
Для вызовов сниппетов используется фасад Snippet:
use EvolutionCMS\Shop\Facades\Snippet;Доступные методы (название соответствует вызываемому сниппету):
run($name, $params)- вызов любого сниппета- Так же через метод
__callреализован вызов любого сниппета.
Пример использования:
Snippet::run($name, $params);
Snippet::DLCrumbs($config);Для получения плейсхолдеров используется фасад GetPlaceholder с методом get:
use EvolutionCMS\Shop\Facades\GetPlaceholder;Пример использования:
return (GetPlaceholder::get($config));Для работы с параметрами используются конфиги и соответствующий фасад:
use Illuminate\Support\Facades\Config;В проекте используется следующие конфигураций:
aesearch- внешний вид быстрых результатов поиска (нужно будет вынести в blade через @VIEW)settings- настройки Evolution CMSCart- параметры для вызова корзиныCommerce- список плейсхолдеров для сообщения спасибоDoclister- параметры для всех вызовов DocListereFilter- параметры для фильтрации и результатов фильтрацииorder- оплата без перезагрузки страницы через FormSenderlogin- для контроллера Login из FormLister (используется FormSender)Register- для контроллера Register из FormLister (используется FormSender)Profile- для контроллера Profile из FormLister (используется FormSender)
Форматирование цены происходит во view, для этого добавлена директива ($convert- не обязательно):
@price($price, $convert)Кастомизация логики Commerce осуществляется через плагин. Добавлены следующие события:
OnBeforeCartItemAddingOnBeforeCartItemRemovingOnManagerBeforeOrderRenderOnRegisterDeliveryOnRegisterPaymentsOnOrderRawDataChanged
Добавлены две "глобальные" переменные (способы доставки и оплаты):
$deliveries$payments
Особенности работы с опциями товара:
- Факт выбора опции хранится в
$params['item']['options'] - Данные о выбранных опциях записываются в
$params['item']['meta'] - Удаление работает по той же логике: если есть информация об удалении опции, удаляется она, иначе удаляется весь товар (стандартная логика Commerce)