Заготовка для простой CMS на основе Yii 2 Basic Template
Добавлено: 2018.01.31, 12:18
Всем доброго времени суток!
Почти с содроганием сердца и волнением , представляю сообществу свой первый публичный продукт multiSiteCMS (Заготовка для простой CMS на основе Yii 2 Basic Template)
Это CMS для ПРОСТЫХ сайтов! Можно выстраивать дерево статей, продуктов.
Можно отслеживать заказы на сайте онлайн и жестко их контролировать. Если посетитель заказал, например, Продукт А в кол-ве 5шт., и закрыл браузер, то администратор сайта сможет это отследить, удалить заказ, при этом 5 шт. продукта А будут возвращены на склад (в БД). Заказ получает статус Висит, если клиент не обращался к нему более двух часов. Также у заказа могут быть статусы: Создается, Не подтвержден, Подтвержден, Отправлен.
Или еще фича: если вы пишете в админке статью, и вставили картинку, потом её уменьшили, то при сохранении статьи код
преобразуется в
Т.е. картинка оборачивается ссылкой с data-fancybox="gallery", что позволяет комфортно просматривать её на фронтенде, при подключении fancybox
Также, если при редактировании, автор удалит картинку из статьи, то при сохранении она также будет удалена из файловой системы.
Работа с представленной CMS требует определенного уровня вхождения: разработчик должен понимать для чего нужно разделение на слои (даже в рамках простого web приложения), и что такое DI, и с чем его едят. Респект Дм. Елисееву за его уроки!
У меня получилось так, что даже в рамках простой CMS, в "классической" модели yii2 (AR + работа с формами) могло вылезти несколько сценариев, несколько After(Before)Save(Delete). Если к этому добавить еще и if-ы в контроллерах, то получалось печально в плане поддержки, и расширения функционала даже для меня, как автора. Открываешь проект через пару месяцев и начинаешь концы искать, что откуда растет.
Сейчас вся логика только в сервисах. Любой сервис или выкидывает исключение, или возвращает результат. Контроллеры работают только с сервисами. В них сплошные try-catch. Соответственно, мне поддерживать всё это безобразие стало легче - вся логика в одном месте, не надо лазать по проекту.
Несколько сумбурно, но как-то так.
Если к представленному приложению будет проявлен интерес, то распишу все более подробно в вики, если нет, то все равно делал в первую очередь для себя, для своих сайтов.
гитхаб (там же ссылка на демо): https://github.com/ale10257/multiSiteCMS
Почти с содроганием сердца и волнением , представляю сообществу свой первый публичный продукт multiSiteCMS (Заготовка для простой CMS на основе Yii 2 Basic Template)
Это CMS для ПРОСТЫХ сайтов! Можно выстраивать дерево статей, продуктов.
Можно отслеживать заказы на сайте онлайн и жестко их контролировать. Если посетитель заказал, например, Продукт А в кол-ве 5шт., и закрыл браузер, то администратор сайта сможет это отследить, удалить заказ, при этом 5 шт. продукта А будут возвращены на склад (в БД). Заказ получает статус Висит, если клиент не обращался к нему более двух часов. Также у заказа могут быть статусы: Создается, Не подтвержден, Подтвержден, Отправлен.
Или еще фича: если вы пишете в админке статью, и вставили картинку, потом её уменьшили, то при сохранении статьи код
Код: Выделить всё
<img src="/uploads/article/7/1/5a7185247495c.jpg" style="width: 246px; height: 184px; float: left; margin: 0px 10px 10px 0px;" width="246" height="184" alt="">
Код: Выделить всё
<a href="/uploads/article/7/1/5a7185247495c.jpg" data-fancybox="gallery"><img src="/uploads/article/7/1/thumb/5a7185247495c.jpg" alt="" style="float: left; margin: 0px 10px 10px 0px;"></a>
Также, если при редактировании, автор удалит картинку из статьи, то при сохранении она также будет удалена из файловой системы.
Работа с представленной CMS требует определенного уровня вхождения: разработчик должен понимать для чего нужно разделение на слои (даже в рамках простого web приложения), и что такое DI, и с чем его едят. Респект Дм. Елисееву за его уроки!
У меня получилось так, что даже в рамках простой CMS, в "классической" модели yii2 (AR + работа с формами) могло вылезти несколько сценариев, несколько After(Before)Save(Delete). Если к этому добавить еще и if-ы в контроллерах, то получалось печально в плане поддержки, и расширения функционала даже для меня, как автора. Открываешь проект через пару месяцев и начинаешь концы искать, что откуда растет.
Сейчас вся логика только в сервисах. Любой сервис или выкидывает исключение, или возвращает результат. Контроллеры работают только с сервисами. В них сплошные try-catch. Соответственно, мне поддерживать всё это безобразие стало легче - вся логика в одном месте, не надо лазать по проекту.
Несколько сумбурно, но как-то так.
Если к представленному приложению будет проявлен интерес, то распишу все более подробно в вики, если нет, то все равно делал в первую очередь для себя, для своих сайтов.
гитхаб (там же ссылка на демо): https://github.com/ale10257/multiSiteCMS