Yii2注册Js设置Type并删除jquery

qgelzfjb  于 2022-11-09  发布在  jQuery
关注(0)|答案(2)|浏览(173)

我希望每个视图都有这样的脚本标记

<script type="application/ld+json">
/******my code
</script>

使用$this-〉寄存器Js(....)
我得到这样的代码:

<script>jQuery(function ($) {
.....
});</script>

如何添加不同类型以及如何删除jQuery..?

dgsult0t

dgsult0t1#

默认情况下,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'])

nsc4cvqm

nsc4cvqm2#

我在布局中使用了这个。使用块允许我在其他页面中为其他www.example.com替换这个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 Cards标签。

相关问题