concepture/yii2-handbook-module
Composer 安装命令:
composer require concepture/yii2-handbook-module
包简介
package under development
README 文档
README
Модуль для разграничения контента по доменам. Содержит сущность домена по которой можно разграничивать контент
Подключение
"require": { "concepture/yii2-handbook-module" : "*" },
Миграции php yii migrate/up --migrationPath=@concepture/yii2handbook/console/migrations
Подключение модуля для админки
'modules' => [
'handbook' => [
'class' => 'concepture\yii2handbook\Module'
],
],
Подключение модуля для консольного приложения
'modules' => [
'handbook' => [
'class' => 'concepture\yii2handbook\Module',
'controllerMap' => [
'sitemap' => 'concepture\yii2handbook\console\controllers\SitemapController',
'url-history' => 'concepture\yii2handbook\console\controllers\UrlHistoryController',
]
],
],
генерация карты саита
php yii handbook/sitemap/generate
полная перегенерация карты саита
php yii handbook/sitemap/re-generate
Для каждой сущности которая должна быть в карте саита в сервисе добаялем треит concepture\yii2handbook\services\traits\SitemapSupportTrait; и реализуем вызов метода sitemapRefresh в afterModelSave и afterDelete
!!! для получения карты саита в frontend/web должны лежать стили для xml
Генерация истории урлов для сущностей
php yii handbook/url-history/re-generate
Для каждой сущности которая должна быть в истории в сервисе подключаем интерфеис UrlHistoryInterface и реализуем вызов метода refresh в afterModelSave
Yii::$app->urlHistoryService->refresh($model, null, 'site', 'page', ['route' => 'seo_name']);
Для работы с доменами в common/config/params-local.php добавить параметр в котором надо указать соответствие доменов (без http) к альясам из таблицы domains
<?php return [ 'yii2handbook' => [ 'domainMap' => [ 'example1.loc' => 'example1', 'example2.loc' => 'example2' ] ] ];
Получить id текущей локали из таблицы Yii::$app->localeService->getCurrentLocaleId()
Получить id текущего домена из таблицы Yii::$app->domainService->getCurrentDomainId();
Получить массив языков Yii::$app->localeService->catalog();
Получить массив доменов Yii::$app->domainService->catalog();
Получить настройку по ключу Yii::$app->settingsService->catalogValue($key);
Динамические элементы
-
Для получения настроек сео для страницы вызываем
Yii::$app->dynamicElementsService->getDataSet($model = null);
Метод вернет обьект concepture\yii2handbook\datasets\SeoData в котором будут учтены:
- дефолтные данные сео где не указан конкретный УРЛ
- если передана модель следом будут учтены сео данные модели
- и после всего будут учтены элементы для текущего URL
-
Расширение для твига - в конфигурацию твига добавить расширение:
... 'extensions' => 'concepture\yii2handbook\twig\DynamicElementsExtension' ...
v2
... 'extensions' => 'concepture\yii2handbook\v2\twig\DynamicElementsExtension' ...
-
Пример
{{ de(de_constant('SettingsTypeEnum::TEXT'), de_constant('SeoSettingEnum::TITLE'), _('de','Главная страница'), 'Заголовок главной страницы') }} {{ de(de_constant('SettingsTypeEnum::TEXT_AREA'), 'MY_TEXT_AREA', _('de','Произвольный текст'), 'Некий текст') }} {{ de(de_constant('SettingsTypeEnum::TEXT_EDITOR'), 'MY_EDITOR', _('de','Произвольный текст'), 'Некий текст 2') }}v2
{{ de(de_const('Type::TEXT'), de_const('Name::TITLE'), 'Title', {'value' : 'Index title', 'no_control' : true}) }} {{ de(de_const('Type::TEXT_AREA'), de_const('Name::DESCRIPTION') , 'Description', {'value' : 'Index descriptions', 'no_control' : true}) }} {{ de(de_const('Type::TEXT_AREA'), de_const('Name::KEYWORDS'), 'Keywords', {'value' : 'Index keywords', 'no_control' : true}) }} {{ de(de_const('Type::TEXT'), 'MULTIPLE_DOMAIN', 'Test multiple domain', {'value' : 'Test multiple domain', 'multi_domain' : false}) }} {{ de(de_const('Type::TEXT'), 'MULTIPLE_DOMAIN_2', 'Test multiple domain', {'value' : 'Test multiple domain', 'general' : true, 'multi_domain' : false}) }} {{ de(de_const('Type::TEXT'), 'PARAMS', 'Test multiple domain', {'value' : 'Test {token} params', 'value_params' : {'token' : 'abc'}}) }} -
Консольные команды
- Подключение (например console\config\main.php)
[ ... 'modules' => [ ... 'handbook' => [ 'class' => 'concepture\yii2handbook\Module', 'controllerMap' => [ ... 'dynamic-elements' => 'concepture\yii2handbook\console\controllers\DynamicElementsCommand', ... ] ], ... ] ... ] - Пример вызова
php yii handbook/dynamic-elements/replacement / /replacement --alias=alias
- Подключение (например console\config\main.php)
Динамический индексируемый файл (robots.txt)
Подключение :
- В необходимом контроллере подключается действие (например frontend\controllers\SiteController.php)
public function actions() { $actions = parent::actions(); ... $actions['robots'] = [ 'class' => 'concepture\yii2handbook\actions\RobotsAction', ]; ... return $actions; }
- Прописать в роутинге правило (например frontend\config\routes.php)
return [ ... [ 'pattern' => 'robots', 'route' => 'site/robots', 'suffix' => '.txt' ], ... ];
Роутинг по доменам
- Подключение (например frontend\config\main.php)
... 'components' => [ 'urlManager' => [ 'class' => 'concepture\yii2handbook\components\routing\DomainUrlManager', 'rules' => require __DIR__ . '/routes.php', ... ], ], ...
- Правила роутинга (например frontend\config\routes.php)
... [ 'patterns' => [ DomainEnum::A => 'objects', DomainEnum::B => 'subjects', ], 'route' => 'object/index' ], [ 'patterns' => [ DomainEnum::A => "objects/<seo_name:({$seo_name_regexp})>", DomainEnum::B => "subjects/<seo_name:({$seo_name_regexp})>", ], 'route' => 'object/view' ], [ 'pattern' => 'robots', 'route' => 'site/robots', 'suffix' => '.txt' ] ...
Hreflag для мультидоменов
- подключение в конфиге (напирмер frontend\config\main.php)
... 'view' => [ ... 'renderers' => [ 'twig' => [ ... 'extensions' => [ ... 'concepture\yii2handbook\components\routing\HreflangExtension' ... ], ... ], ] ... ], ...
- подключение на шаблоне (frontend\views\layout\main.html.twig)
...
<head>
...
{{ hreflang() }}
...
</head>
...
- подключение доменов ( пример common/config/params-local.php ) параметр hreflang включает домен
return [ 'yii2handbook' => [ 'domainMap' => [ 'alias.loc' => [ 'alias' => 'alias', 'locale' => 'ru', 'hreflang' => 'ru-ru' ] ] ] ];
Модуль сортировки для контроллера
- Создать сущность object (Служебные сущности - таблица
entity_type) - Подключение в контроллере (пример backend\controllers\ObjectController)
... use concepture\yii2handbook\actions\PositionSortIndexAction; use kamaelkz\yii2admin\v1\actions\EditableColumnAction; use kamaelkz\yii2admin\v1\actions\SortAction; use concepture\yii2handbook\services\EntityTypePositionSortService; use kamaelkz\yii2admin\v1\controllers\traits\ControllerTrait; ... public function actions(): array { $actions = parent::actions(); return array_merge($actions,[ ... PositionSortIndexAction::actionName() => [ 'class' => PositionSortIndexAction::class, 'entityColumns' => [ 'id', 'name', 'seo_name', ], 'labelColumn' => 'name', ], EditableColumnAction::actionName() => [ 'class' => EditableColumnAction::class, 'serviceClass' => EntityTypePositionSortService::class ], SortAction::actionName() => [ 'class' => SortAction::class, 'serviceClass' => EntityTypePositionSortService::class ] ... ]); } ...
- Подключение на вьюшке (backend\object\index.php)
... use concepture\yii2handbook\actions\PositionSortIndexAction; ... $this->viewHelper()->pushPageHeader( [PositionSortIndexAction::actionName()], Yii::t('yii2admin', 'Сортировка'), 'icon-sort' ); ...
Менеджер очередей Beanstalk
Компонент кэша
Сео блоки
- подключение в конфиге (напирмер frontend\config\main.php)
... 'view' => [ ... 'renderers' => [ 'twig' => [ ... 'extensions' => [ ... 'concepture\yii2handbook\twig\SeoBlockExtension' ... ], ... ], ] ... ], ...
- подключение на шаблоне (frontend\views\layout\main.html.twig)
...
<head>
...
{{ seo_block(c('SeoBlockPositionEnum::HEAD')) }}
...
</head>
...
- подключение элемента меню в админке
... 'yii2admin-navigation' => [ ... [ 'label' => Yii::t('yii2admin', 'SEO блоки'), 'url' => ['/handbook/seo-block/index'], 'active' => [ 'rules' => [ 'c' => ['seo-block'] ] ] ], ... ] ...
concepture/yii2-handbook-module 适用场景与选型建议
concepture/yii2-handbook-module 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.59k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2019 年 11 月 07 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 concepture/yii2-handbook-module 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 concepture/yii2-handbook-module 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 3.59k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 4
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-11-07