Архитектура

Если вы новичок в мире экосистемы Shopaholic, мы рекомендуем вам начать обучение с этого раздела.

В разделе «Архитектура» вы сможете подробно узнать об архитектуре плагинов Shopaholic. Вы получите ответы на большинство вопросов: «Почему это так, а не иначе? Как это работает? Как быстро разрабатывать проекты вместе с Shopaholic?»

Структура каталогов

Все плагины, разработанные LOVATA или нашими проверенными партнерами, имеют одинаковую структуру каталогов:

                            
                            assets/
                            css/
                            js/
                            images/
                                classes/            <=== Папка с основными классами плагина 
                                    collection/     <=== Папка с *Collection classes
                                    console/        <=== Папка с командами artisan
                                    event/          <=== Папка с классами слушателей событий 
                                    helper/         <=== Папка с классами слушателей событий 
                                    item/           <=== Папка с *Item classes
                                    queue/          <=== Папка с классами очереди
                                    store/          <=== Папка с *Store classes
                                components/
                                interfaces/
                                config/             <=== Папка с .yaml configs
                                lang/
                                models/
                                tests/
                                traits/
                                updates/
                                views/
                            
                            

Подробную информацию о том, как стать проверенным партнером, вы можете найти в разделе «Вклад».

Файлы миграции и посадки

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

Файлы находятся в каталоге «update /». Вы можете найти подробную информацию о файлах миграции и сеансов в документации OctoberCMS.

Классы моделей

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

Все модели содержат аннотации со списком полей и методов области действия, которые находятся в этом классе моделей. Это позволит вам быстро разрабатывать свои проекты, используя функцию IDE autocomplete.

Файлы находятся в каталоге "models /". Вы можете найти подробную информацию о моделях в документации OctoberCMS.

Кэширование

Мы используем класс ElementItem, класс ElementCollection, классы памяти для кэширования данных модели и вывода кэшированных данных в шаблоны. Созданный кеш автоматически сбрасывается при возникновении события, которое влияет на достоверность этого кеша. Логика автоматического сброса кеша позволяет долго хранить данные кеша и получать хорошие показатели скорости работы вашего сайта.

Внимание! Кэширование - очень важная информация для быстрой разработки с использованием плагинов Shopaholic. Мы рекомендуем вам обязательно изучить разделы класс ElementItem, класс ElementCollection.

Компоненты

Внимание! Компоненты не имеют шаблонов. Компоненты позволяют получать объекты классов ElementItem, ElementCollection.

Компоненты не имеют шаблонов, потому что каждый проект имеет свой уникальный дизайн и структуру HTML. Логика блоков может быть похожей, но с небольшими отличиями. Поэтому, чтобы разработчикам не приходилось замораживать плагины, приспосабливая логику к проекту, мы предоставляем гибкие классы для отображения данных в шаблоне.

Большинство компонентов относятся к одному из 4 типов: список элементов, данные элемента, страница элемента, форма отправки.

Тип компонента: список элементов

Компоненты этого типа могут создавать объекты класса ElementCollection и позволяют отображать блоки со списками элементов. Разработчики могут легко визуализировать блоки:

  • Полный список со всеми активными элементами
  • Список с активными элементами + нумерация страниц
  • Список со случайными элементами с примененными фильтрами (Например: случайные продукты с фильтром по категориям)
  • Список с первыми элементами из списка (например: 5 самых популярных продуктов)
  • Список с последними элементами (например: список последних статей по дате публикации)
  • и т.п

Тип компонента: страница элемента

Компонент этого типа позволяет разработчикам быстро создавать элементы страницы. Например: страница продукта, страница бренда и т. Д.

Тип компонента: данные элемента

Компонент этого типа позволяет разработчикам быстро получать объекты по идентификатору. Например: всплывающее окно с подробной информацией о продукте в каталоге.

Тип компонента: отправить форму (submit)

Компонент этого типа используется для отправки форм и получения в качестве объекта ответа с текстом ошибки или перенаправления на нужную страницу после успешной отправки. Например: создание заказа, регистрация пользователя и т. Д.