insolita / yii2-metacrumbs
alternative way for work with breadcrumbs and meta
Installs: 5
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- php: >=5.6
- yiisoft/yii2: ~2.0.11
Requires (Dev)
- codeception/codeception: ^2.2.3
- codeception/specify: ~0.4.3
- codeception/verify: ~0.3.1
- vlucas/phpdotenv: *
This package is auto-updated.
Last update: 2024-11-27 02:22:05 UTC
README
alternative way for work with breadcrumbs and metadata with open-graph-protocol helpers
also include NoLayoutBehavior for registration actions where layout must be skipped
Installation
The preferred way to install this extension is through composer.
Either run
composer require --prefer-dist insolita/yii2-metacrumbs "~2.0"
or add
"insolita/yii2-metacrumbs": "~1.0"
to the require section of your composer.json
file.
Usage
- register MetaCrumbsBootstrap, or manual register as singleton :
\Yii::$container->setSingleton(IBreadcrumbCollection::class,BreadCrumbs::class);
and/or
\Yii::$container->setSingleton(IMetaManager::class,MetaManager::class);
- add widget in layout
<?= \insolita\metacrumbs\widgets\CrumbWidget::widget([]) ?>
- add CrumbedControllerTrait in base controller (or in needed controllers) and register crumbs
- add MetaManagerTrait in needed controllers or base controller (also in service possible)
Controller Example
class ExampleController extends Controller { use CrumbedControllerTrait; use MetaManagerTrait; public function actions() { return [ 'error' => [ 'class' => 'yii\web\ErrorAction', ], ]; } public function behaviors() { return [ 'nolayout'=>['class'=>NoLayoutBehavior::class,'actions' => ['ajax']] // 'nolayout'=>['class'=>NoLayoutBehavior::class,'actions' => ['index','about'],'except'=>true] ]; } public function beforeAction($action) { $this->registerHomeCrumb(); $this->registerIndexCrumb('Сайтег'); if ($action->id == 'error') { $this->registerCurrentCrumb('Страница ошибок'); $this->metaManager()->canonical(); } return parent::beforeAction($action); } public function actionIndex() { $this->metaManager()->canonical(Url::to(['example/default'])); $this->metaManager()->tag('description', 'Bla-bla-la-la-la'); $this->metaManager()->prop('og:description', 'Bla-bla-bla'); $this->metaManager()->prop('og:title', 'Bla-bla-bla'); $this->metaManager()->keywords('Some, keywords,list'); //Also return $this->render('index'); } public function actionView(int $id) { $this->crumbCollection->addCrumb( new CrumbItem('Special crumb', Url::to(['some/page']), 20, ['target' => '_blank']) ); $model = $this->pageFinder->findById($id); $this->registerCurrentCrumb($model->title); $this->metaManager()->ogMeta($model->title,Url::current([],true),$model->description,$model->cover,'article'); return $this->render('about',['model'=>$model]); } ....