insolita/yii2-metacrumbs

alternative way for work with breadcrumbs and meta

Maintainers

👁 Insolita

Package info

github.com/Insolita/yii2-metacrumbs

Type:yii2-extension

pkg:composer/insolita/yii2-metacrumbs

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 2

Open Issues: 0

1.0 2017-05-29 04:54 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT f747ba087bf68035274a233115c0cb647e4fa0b7

  • insolita <webmaster100500.woop@ya.ru>

extensionyii2

This package is auto-updated.

Last update: 2026-06-27 05:46:48 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

👁 Status
👁 Latest Stable Version
👁 Total Downloads
👁 License

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]);
 }

 ....