RzWebSys7 - CMS на основе Yii2
Предствляет собой платформу для быстрого развертывания интерент проекта. Содержит набор наиболее востребованных модулей.
Структура системы
1) app - web приложение
2) console - консольное приложение
3) common - ядро системы
4) vendor - сторонние компоненты
5) environments - настройки окружений
Системные требования
1) PHP 5.4
2) Веб сервер Apache 2.2
3) PostgreSql 9.3
4) Composer
Установка
Предполагается что composer находится в путях поиска вашей командной оболочки. Например, его можно разместить в /usr/local/bin
Apache настроен таким образом, что DOCUMENT_ROOT для виртуального хоста указывает на папку app/web
Для начала неоходимо установть плагин fxp/composer-asset-plugin:1.0.0 для composer. Для этого выполняем следующую комаду:
composer.phar global require "fxp/composer-asset-plugin:1.0.0"
После этого можно приступит к установки самой системы:
1) В файлах environments/dev/common/config/main-local.php и environments/prod/common/config/main-local.php прописываем настройки соединения с базой данных для окружения разработки и продакшена соответственно.
2) Устанавливаем зависимости через composer. В корне системы выполняем команду composer.phar install
3) Запускаем скрипт ./init и выбираем нужное окружение для установки
4) Запускаем ./yii install
5) Наслаждаемся )
Административный раздел находится по адресу /admin/. Для входа используйте пароль пользователя root указанный при установке.
Модули входящие в состав системы
Главный модуль
Предоставляет следующий функционал:
Текстовые странички с возможностью создание иерархических структур и управлением мета - тегами. Возможность создания дружественных SEO url - адресов произвольной вложенности. Например: /articles/php/yii2/
Меню. Возможность создания любого количества меню, произвольной вложенности.
Комментарии. Возможность добавления комментариев к любой сущности системы.
Включаемые области. Текстовые включаемые области с возможностью подключения php сценариев.
Группы включаемых областей. Объединение включаемых областей в группы с возможностью задания правил отображения на страницах сайта.
Управление пользователями и правами доступа к сущностям. Возможность разграничить доступ к сущностям в админке для разных групп пользователей.
Управление подключением шаблонов сайта в зависимости от условий (по url адресу, php выражению и т.п.)
Генератор карты сайта в html и xml форматах.
Форма обратной связи с отправкой сообщений на email.
Модуль новостей
Создание новостных и статейных разделов. Иерархический рубрикатор записей.
Баннерный модуль
Добавление баннеров и их вывод в зависимости от баннерного места. Поддерживаются следующие форматы: jpg, gif, png, swf.
Каталог
Каталог товаров с иерархической рубрикацией. Возможность интеграции с модулем магазина.
Модуль магазина.
Компоненты корзины реализованы с помощью ajax и работают без перезагрузки страницы. Возможность создания вариантов доставки и оплаты, настройка статусов заказа. Содержимое заказа сохраняется в админке, а также отправляется администратору сайта на email.
Гео модуль
Содержит данные и компоненты для организации гео - справочника.
Фотогалерея
Создание фотогалерей с загрузкой файлов через HTML 5
Модуль импорта
Позволяет ипортировать данные из CSV файлы. Есть возможность ручной настройки сопоставления полей файла и импортируемых моделей.
Создание модулей
Генерация каркаса нового модуля
Осуществляется с помощью системного генератора App module generator
Подключение модуля к системе
Для покдлючения модуля к системе необходимо прописать идентификатор модуля в параметре enabledModules в файле:
common/config/params.php
Создание таблиц сущностей новых модулей.
Осуществляется с помощью миграций. Миграции создаются на базе системных шаблонов.
Примеры (таблица простой сущности, таблица древовидной сущности):
./yii migrate/create --migrationPath=@webapp/modules/module_name/migrations --templateFile=@console/views/migrations/table.php migration_name
./yii migrate/create --migrationPath=@webapp/modules/module_name/migrations --templateFile=@console/views/migrations/table-tree.php migration_name
где module_name - имя модуля для которого создается миграция, migration_name - имя миграции
Пример применения миграций для конкретного модуля:
./yii migrate/up --applyPath=@webapp/modules/module_name/migrations
Без параметра applyPath применение миграций происходит для всех модулей сразу
Создание моделей
Модели системы должны быть унаследованы от \common\db\ActiveRecord или \common\db\TActiveRecord (обычные и древовидные соответственно).
Для каждой модели должен быть создан класс, унаследованный от \common\db\MetaFields. В нем должен быть реализован метод возвращающий конфигурацию объектов полей модели. Поле модели - дополнительная абстракция над атрибутом модели. Класс поля должен быть унаследован от \common\db\fields\Field. Данная абстракция необходима для автоматической генерации интерфейса администрирования.
Примеры кода можно найти в модуле main.
Генерация CRUD сущностей
Осуществляется с помощью модуля Gii на основе системных шаблонов. Шаблоны App CRUD и App tree CRUD для обычных и древовидных сущностей соответственно. Базовый класс для контроллеров админки common\controllers\Admin.
Рекомендации
Модули ресурсов (AssetBundle) необходимо наследовать от \common\components\AssetBundle
Генерация документации
Для генерации документации воспользуйтесь следующими командами
vendor/bin/apidoc api app ./docs/app
vendor/bin/apidoc api common ./docs/common
vendor/bin/apidoc api console ./docs/console
Тестирование
Пример генерации фикстур сущностей по шаблону:
./yii fixture/generate-all --templatePath='@tests/codeception/common/templates/fixtures' --fixtureDataPath='@tests/codeception/common/fixtures/data'