Новичку в OctoberCMS
OctoberCMS - система для разработчиков
Программировать "мышкой" как в WordPress'e или Drupal'e не получится. Тут надо сразу настроиться, что придётся честно немного попрограммировать. В частности это подтверждается таким фактов. 2 года назад разработчиками был анонсирован плагин для создания лэндингов на Октябре. Проект не продвинулся дальше графических макетов, т.к. был получен противоречивый отклик относительного того, стоит делать из Октября "платформу для пользователей" или оставить ее "платформой для разработчиков".
Первое
Поковырять плагин Builder. Он позволяет создать свой плагин. И еще 3 плагина о которых я писал.
Второе
Посмотреть плейлисты от Ivan Dorić про создание сайтов на OctoberCMS.
- Making websites with October CMS
- Vue 2 and October CMS Todo App
- Creating Rent-a-Car App with Vue and October
Про FrontEnd контроллеры в OctoberCMS
Работа со связями
Поставить плагин песочницу и использовать его как коллекцию примеров кода. Для установки достаточно разместить содержимое репозитория в директории /plugins/october/test
и залогиниться в админке. Если залогинены, то разлогиниться и залогиниться.
Пользователи
В OctoberCMS есть backend пользователи, которые "ходят" в админку и управляют сайтом + frontend пользователи, которые будут являться непосредственными пользователями сайта. Frontend пользователей по-умолчанию нет, эта функциональность плагинов. Существует 2 плагина пользователей:
- Rainlab.User - от создателей OctoberCMS. Его стоит выбирать, если необходима интеграция с экосистемой плагинов OCtoberCMS.
- Lovata.Buddies - альтернатива от создателей Shopaholic, однозначный выбор при построении интернет-магазина на OctoberCMS.
Принципиальные отличия:
- У
User
проблемы с локализацией сообщений. Не все строки в словарях, говоря простыми словами: «Возвращаются исключения только на английском языке». Набор полей пользоватлей предопределен заранее в коде. Для расширения набора можно поставить дополнительный плагин User Plus либо написать свой. Buddies
из коробки расширяем. Можно просто в админке добавить своих полей и не мучится с миграциями и наследованием. Компоненты Buddies работают как обычный submit формы, так и ajax. В случае ajax ошибки можно получать как объект в ответе или как Flash message
Позволю процитировать создателей Buddies
в вопросе зачем нужен второй плагин пользователей.
Дело в том, что функциональность пользователей является очень критичной для построения личного кабинета и мы не можем ставить в зависимость собственный roadmap поставки продуктов от стороннего решения, которое к тому же еще и не устраивает нас с точки зрения технической реализации.
Для нас главным недостатком являются кастомные поля профиля, важные в серьезном eCommerce, которые в User отсутствуют, а появляются только при установке User+. Но при этом их набор все равно предопределен заранее, если не ошибаюсь. А нам важно было разработать гибкое решение, которое предоставляло бы API для расширения под нужды конкретного проекта. Кроме того, User+ обременен лишней функциональностью типа "Experience Points".
Тем не менее, Buddies появился именно потому, что мы уперлись в ограничения User.
Кстати, Lovata подумывает Buddies 2 сделать на базе паспорта.
И плавно переходим к интернет-магазину
Интернет-магазин
Я не делал интернет-магазинов и, при всём уважении к остальным eCommerce плагинам, для разработки следует выбирать Shopaholic. Интеграции с 1С из коробки нет, зато есть своя миниэкосистема плагинов для интернет-магазина внутри экосистемы плагинов OctoberCMS))
Некоторые официальные цифры производительности Shopaholic. (2CPU 4GB RAM)
Каталог в 210 SKU:
- загрузка страницы каталога 100-150 мс
- фильтрация списка товаров 80-100 мс
Каталог 21 000 SKU:
- загрузка страницы каталога 900-1100 мс
- фильтрация списка товаров 500-600 мс
И еще одна цитата про функционирующий проект:
- http://octobercms.com/plugin/lovata-shopaholic
- http://octobercms.com/plugin/lovata-propertiesshopaholic
- http://octobercms.com/plugin/lovata-filtershopaholic
550 000 свойств товаров при 20 000 товаров и 50 000 товарных предложений без проблем на 2CPU 4RAM и то, такая конфигурация болше нужна для ночных обновлений из 1С и zoomos
Создание страниц как в обычной CMS
Плагин Static Pages. Как пользоваться описано в посте официального блога. Есть тема как пример использования.
Чем отличаются CMS->Cтраницы и Страницы.
Различие в том, что на CMS->Cтраницы (Pages) предназначены для разработчиков. В них добавляется функциональность через компоненты, работает разметка Twig, настраиваются пути.
Страницы (Static Pages) созданы для контент-менеджеров с визуальным редактором и возможностью вставить сниппет (там где в MODX обычно вызываются чанки или сниппеты). После создания статичной страницы она появляется в содержмом CMS в папке static-pages как htm содержимое.
Использование Static Pages не исключает использования Pages и наоборот.
Чем отличаются компоненты от динамических фрагментов (Dynamic partials).
Фрагмент - это кусок twig кода. Динамический фрагмент - тот же кусок twig кода + несколько объявленных выше функций в PHP секции. Стоит отметить, что CMS во время обработки страницы конвертирует PHP секцию в класс, поэтому доступно только написание функций и использование других классов с помощью ключевого слова use. AJAX фреймворком невозможно воспользоваться в простом фрагменте.
Компонент входит в состав плагина. У компонента есть своя бизнес логика, класс и свои фрагменты. Компонент это нечто большее, его можно расширять, использовать трейты, больше Life cycle. Можно считать контроллером.
Форма обратной связи
Плагин Magic Forms. Зависит от AJAX фреймворка OctoberCMS
И еще два слова
Документация на элементы управления Backend October CMS, но там не всё, остальное надо читать в исходниках https://github.com/octobercms/october/tree/master/modules/system/assets/ui/docs
Если что-то не работает через routes.php
, то в первую очередь следует добавить 'middleware' => 'web'
Для Visual Studio Code есть плагин подсветки синтаксиса
Из-за ограничений грамматической системы VS Code вначале секции Twig/HTML следует добавлять {##}
. Не помешает ознакомиться с другими плагинами VSCode, которыми я пользуюсь при разработке на PHP.