insolita/yii2-metacrumbs

处理面包屑和元数据的替代方法

安装: 5

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 3

分支: 0

开放问题: 0

类型:yii2-extension

1.0 2017-05-29 04:54 UTC

This package is auto-updated.

Last update: 2024-08-27 01:49:50 UTC


README

使用开放图协议助手处理面包屑和元数据的替代方法

还包括NoLayoutBehavior,用于注册需要跳过布局的动作

Status Latest Stable Version Total Downloads License

安装

安装此扩展的首选方式是通过 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]);
    }

    ....