Yii2 注册 Js 设置类型并删除 jquery
Yii2 register Js set Type and remove jquery
我希望每个视图都有这样的脚本标签
<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',
'name' => Yii::$app->name,
'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 卡片标签生成。
我希望每个视图都有这样的脚本标签
<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',
'name' => Yii::$app->name,
'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 卡片标签生成。