yii2-tools / yii2-community-cms
A simple CMS with Yii2
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
Requires
- php: >=5.4.0
- 2amigos/yii2-ckeditor-widget: ~1.0
- 2amigos/yii2-file-upload-widget: ~1.0
- almasaeed2010/adminlte: ~2.0
- dmstr/yii2-adminlte-asset: 2.*
- kartik-v/yii2-grid: ^3.1
- kartik-v/yii2-krajee-base: ^1.8
- kartik-v/yii2-sortable: ^1.0
- kartik-v/yii2-widgets: ^3.4
- pear/archive_tar: ^1.4
- soundasleep/html2text: ~0.2
- tinymce/tinymce: 4.0.11
- wapmorgan/unified-archive: 0.0.*
- yii2-tools/yii2-active-params: ~1.0
- yii2-tools/yii2-base: ^1.0.4
- yii2-tools/yii2-breadcrumbs-filter: ~1.0
- yii2-tools/yii2-crud: ~1.0
- yii2-tools/yii2-secure-ar: ~1.0
- yiisoft/yii2: 2.0.8
- yiisoft/yii2-authclient: ~2.0
- yiisoft/yii2-bootstrap: *
- yiisoft/yii2-jui: ~2.0
- yiisoft/yii2-redis: ^2.0
- yiisoft/yii2-swiftmailer: *
- yiisoft/yii2-twig: ~2.0.0
Requires (Dev)
- codeception/c3: *
- codeception/codeception: 2.1.9
- codeception/specify: *
- codeception/verify: *
- packagist/closurecompiler-bin: ^2015.05
- packagist/yuicompressor-bin: ~2.0
- se/selenium-server-standalone: ^2.52
- yiisoft/yii2-apidoc: ~2.0
- yiisoft/yii2-codeception: *
- yiisoft/yii2-debug: ~2.0
- yiisoft/yii2-faker: *
- yiisoft/yii2-gii: *
This package is auto-updated.
Last update: 2024-11-17 01:20:15 UTC
README
Тренировочный проект 💀, который писал с января по июнь 2016 года, во время изучения Yii2.
Если его задеплоить, получится простенький сайт (PHP5 + Yii 2.0.8) c форумом, новостной лентой и админкой, где можно менять шаблоны, управлять форумом, пользователями (на базе dektrium/yii2-user), добавлять/удалять страницы и устанавливать плагины/виджеты. В качестве фронтенда админки прикручена и адаптирована AdminLTE.
Сайт использовался в реальном конструкторе (своеобразный аналог Wix/uCoz, но тематический). По кнопке в ЛК конструктора файлы (default_site/) копировались на выделенный сервер, создавался поддомен и БД, в конфиг прокидывались параметры окружения, а пользователю выдавался аккаунт администратора.
Шаблоны
Шаблоны сайта (и все используемые ассеты) собраны в одной директории
и могут загружаться одним архивом через админку
(на базе wapmorgan/UnifiedArchive).
Шаблон представляет собой .twig
файл, который рендерится контроллером
в sandbox
режиме. Внутри шаблона можно подёргать кастрированный API твига,
например, чтобы нарисовать картинку из того же архива или подключить jsку,
ну и безопасные фильтры песочницы.
Шаблоны самой админки находятся под отдельным неймспейсом и пользователь не имеет к ним интерфейса (только если есть доступ к коду сайта).
Плагины и виджеты
Есть возможность устанавливать виджеты и плагины. Виджет - это архив
с интеграционным .php
хуком, который движок скушает при обходе
директории, а также набор ассетов
для добавления на страницу. После установки, виджет встраивается
пользователем в нужную часть шаблона в виде текстового плейсхолдера
(например, {MY_WIDGET_XXX}
). Движок во время рендеринга
подменяет плейсхолдеры на реальный html/js код.
Плагин отличается от виджета тем, что он по сути является встроенным в сайт приложением (толстый js клиент, который сам умеет стучаться к различным бекендам за данными). Плагин не встраивается в какую-либо часть шаблона, а рендерится на отдельной странице через специальный контроллер.
Виджеты и плагины устанавливаются в личном кабинете и поставляются вендорами. Т.е. в отличие от архивов с шаблонами, которые пользователь редактирует сам, виджеты и плагины копируются физически в директорию сайта демоном/таском (rsync/scp). Пользователь лишь ставит в очередь свой сайт на подключение того или иного дополнительного функционала (в том числе, платного).
Для виджетов и плагинов предусмотрено версионирование, т.е. при деплое новой версии виджета/плагина, пользователь сможет подтянуть на сайт свою копию с сервера обновлений.
Можно ли это использовать? (лол)
Если брать как каркас и допилить под конкретные нужды,
то, теоретически, да. Все достаточно структурировано и расширяемо
(в рамках экосистемы Yii),
но с 2016 года многое изменилось и зависимости сильно устарели,
надо чекать. Например, популярный фронтенд для админок
AdminLTE поменял неймспейс
с almasaeed2010
на ColorlibHQ и тд.
Да и за качеством кода в тот момент следил не особо сильно, делал
по принципу "чтобы работало", поэтому за многие
места сейчас будет стыдно (но, наверное, у многих был такой велосипед) 😮
Makefile
Для управления проектом использовался make
. Можно сгенерить
документацию по комментариям к коду
(прикручен yiisoft/yii2-apidoc),
покатать миграции, погонять тесты (coverage 80%+), месс детектор,
нарисовать бейджик с текущим тегом, ну и различные интеграции с
jenkins'ом.