+7 988 353-52-54 kompman1@yandex.ru

г. Краснодар

Как устроена 100300 CMS

Ядро, модули, темы и блоки; стек PHP 8.3, Symfony-компоненты, Doctrine DBAL, Twig, Vue 3.

100300 CMS — модульная система на PHP 8.3. Всё, что не нужно каждому сайту, вынесено в модули; внешний вид — в темы.

Стек

ЧастьТехнологии
СерверPHP 8.3+, компоненты Symfony (HttpKernel, DI, Routing, Console), Doctrine DBAL и миграции
ШаблоныTwig
БазаMySQL 8 / MariaDB 10.6+
АдминкаVue 3, TypeScript, PrimeVue, Tailwind (одностраничное приложение)
Хостингобычный виртуальный: без Node.js, Redis и очередей на сервере

Из чего состоит

core/        ядро: контент, поля, блоки, медиа, формы, SEO, лицензии, планировщик
modules/<id> модули: shop, blog, seo, amocrm…
themes/<code> темы: default и шаблоны
admin/       исходники админки (Vue)
public/      единственная папка, видимая из интернета
config/      config.php, install.lock
storage/     загрузки, кеш, логи, var

Контент

Данные сайта — записи (cms_entry) типов контента (страница, товар, запись блога). У типа — поведения (публикуемый, с адресом, с SEO, переводимый, древовидный, из блоков), у записи — поля из групп полей. Модули объявляют свои типы и поля кодом (см. «Типы контента и поля»).

Страница из блоков хранит раскладку: секции → ряды → колонки → блоки с настройками. Блок — папка с block.json, fields.php, block.twig.

Запрос

public/index.php → ядро (Symfony HttpKernel) → слушатели (языки, города, формы) → маршрут: контроллер модуля по атрибуту #[Route] или страница записи по адресу → Twig-шаблон темы (или модуля) → ответ.

Расширение

Модули встраиваются через:

  • события (Symfony EventDispatcher): EntrySavedEvent, FormSubmitted, события магазина;
  • теги сервисов: хуки темы, фоновые задачи, провайдеры целей аналитики, карты сайта;
  • админку: register(ctx) добавляет маршруты, пункты меню, вкладки, панели.

Платные модули работают только с лицензией на домен сайта.

Статья помогла?