如何解决Yii2注册Js设置类型并删除jQuery
我希望每个View都具有这样的脚本标签
<script type="application/ld+json">
/****** my code
</script>
与 $ this-> registerJs(....)
我得到这种代码:
<script>jQuery(function ($) {
.....
});</script>
如何添加不同类型以及如何删除jQuery ..
解决方法
默认情况下,registerJs()
使用的是$position = View::POS_READY
,而这是自动注册jQuery资产的。如果您不想这样做,可以使用:
-
registerJs($js,\yii\web\View::POS_HEAD)
-将JS放在头部 -
registerJs($js,\yii\web\View::POS_BEGIN)
-将JS放在身体部位的开头 -
registerJs($js,\yii\web\View::POS_END)
-将JS放在正文部分的末尾
不幸的是,所有这些都会将您的脚本添加到标准<script>
标记中,而无需输入类型。
要实现此目的,您必须手动添加它,方法是自己放置<script...>
或在视图或布局文件中调用\yii\helpers\Html::script($js,['type' => 'application/ld+json'])
。
我在布局中使用它。使用块可以让我在其他页面中将其替换为其他schema.org。
<?= Html::script(isset($this->blocks['schema'])
? $this->blocks['schema']
: \yii\helpers\Json::encode([
'@context' => 'https://schema.org','@type' => 'WebSite','name' => Yii::$app->name,'image' => $this->image,'url' => $this->url,'descriptions' => $this->description,'author' => [
'@type' => 'Organization','url' => Yii::$app->homeUrl,'telephone' => Yii::$app->params['phone'],]
]),[
'type' => 'application/ld+json',]) ?>
-
只需使用Html :: script($ js,$ options)。
-
考虑使用Json :: encode()以避免在PHP中编写JS 文件。这样对我来说更漂亮,也使变量 插值更容易。
-
在此示例中,您看到很多
$this->image|description|url
因为我使用https://github.com/daxslab/yii2-taggedview来扩展 yii \ web \ View具有更多属性,以使Opengraph自动化 和Twitter Cards标签生成。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。