insolita / yii2-metacrumbs
处理面包屑和元数据的替代方法
1.0
2017-05-29 04:54 UTC
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-08-27 01:49:50 UTC
README
使用开放图协议助手处理面包屑和元数据的替代方法
还包括NoLayoutBehavior,用于注册需要跳过布局的动作
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一:
composer require --prefer-dist insolita/yii2-metacrumbs "~2.0"
或
"insolita/yii2-metacrumbs": "~1.0"
将以下内容添加到您的 composer.json
文件的 require 部分:
使用方法
- 注册 MetaCrumbsBootstrap,或手动注册为单例
\Yii::$container->setSingleton(IBreadcrumbCollection::class,BreadCrumbs::class);
和/或
\Yii::$container->setSingleton(IMetaManager::class,MetaManager::class);
- 在布局中添加小部件
<?= \insolita\metacrumbs\widgets\CrumbWidget::widget([]) ?>
- 在基控制器(或所需控制器)中添加 CrumbedControllerTrait 并注册面包屑
- 在所需控制器或基控制器(也可能在服务中)中添加 MetaManagerTrait
控制器示例
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]); } ....