灵活运用 - 合理定义meta的key ¶
作者:KK
发表日期:2016.10.17
如果要在head标签里输出meta keywords和description的话,一般是要在模板里执行这样的代码:
$this->registerMetaTag([
'name' => 'keywords',
'content' => '本页关键词1 关键词2 关键词N ……',
]);
$this->registerMetaTag([
'name' => 'description',
'content' => 'KK洗衣粉,洗出来的衣服比兔毛还要白!',
]);
但实际上很多站点都不会为每个模板都设置关键词以及摘要信息,于是在layout里也会registerMetaTag作为一份通用的关键词和摘要
但在layout注册了meta后,模板又注册,就会出现重复输出的情况:
解决办法是有的,且看yii\web\View::registerMetaTag的源代码:
好了,那明白了吧,其实就是将代码改成这样就好了:
$keywordsFlag = 'keywords'; //关键点是这个标记!!!
$this->registerMetaTag([
'name' => 'keywords',
'content' => '本页关键词1 关键词2 关键词N ……',
], $keywordsFlag);
$descFlag = 'desc'; //关键点也是这个标记!!!
$this->registerMetaTag([
'name' => 'description',
'content' => 'KK洗衣粉,洗出来的衣服比兔毛还要白!',
], $descFlag);
因为底层用第2个参数作为key值将注册的meta信息保存起来了,layout注册一次后保存,再在模板里重复注册时,只要使用相同的第2个参数标识符,就可以覆盖掉layout的,而不是追加