26.04.2021     195

В этой небольшой статье я расскажу как я создаю сайты на движке Shopker (https://shopker.org/) на примере одного реального сайта. Статья актуальна для Symfony 5.

Вот пример сайта: https://animate.studio/. На этом сайте можно создавать видео-заставки и текстовые анимации для роликов. Есть платные и бесплатные. Пользователь выбирает анимацию, фоновое изображение или видео и отправляет заказ. Если анимация бесплатная, то сразу после создания заказа он добавляется в очередь на рендеринг (визуализацию). Сами анимации созданы с использованием Canvas и JavaScript. На выходе получается видео с разрешением FullHD (1920x1080).

Итак, как устроен этот сайт. Весь новый функционал, которого нет в составе Shopker, создан как Symfony бандл. Файлы бандла находятся в отдельной папке "/vendor/andchir/animations-bundle/". Подключаю этот бандл в composer.json так:

...
"autoload": {
    "psr-4": {
        "App\\": "src/App/",
        ...
        "Andchir\\AnimationsBundle\\": "vendor/andchir/animations-bundle/"
    }
},
...

Такой способ удобен когда код находится в закрытом (приватном) репозитории, но есть и другой способ.

GIT-репозиторий клонируется в папку, потом его удобно обновлять. Далее бандл подключается в файле "/config/bundles.php":

<?php

return [
    ...
    Andchir\AnimationsBundle\AnimationsBundle::class => ['all' => true],
];

Конфигурация бандла находится в файле "/config/packages/animations.yaml" (его тоже копирую вручную).

Если же код в открытом репозитории и создан composer-пакет, то этого делать не нужно, всё максимально автоматизировано при установке пакета.

Для примера можно взять готовый пакет "shopkeeper4-comments": https://github.com/andchir/shopkeeper4-comments. Там даже есть пример встраивания своего интерфейса в админку. Этот пакет всегда идёт в составе Shopker.

В бандле может находиться любой функционал: контроллеры, шаблоны, подписчики на события, классы сущностей и т.д. В папке "/vendor/andchir/animations-bundle/Resources/public/" находятся публичные файлы, которые при установке будут доступны по адресу "/bundles/animations/". При установке composer-пакета создаются симлинки (ссылки) для этой публичной папки.

Я думаю этой информации достаточно, всё остальное можно увидеть в пакете "shopkeeper4-comments", о котором писал выше.