mainaero / yii2-gtm-widget
Yii2 框架的 Google Tag Manager 小部件
v1.2.0
2018-01-30 14:22 UTC
Requires
- yiisoft/yii2: ^2.0.13
Requires (Dev)
- codeclimate/php-test-reporter: ^0.4.4
- phpunit/phpunit: ^6.5
This package is auto-updated.
Last update: 2024-09-11 20:37:04 UTC
README
一个 Yii2 扩展,提供了一个小部件来渲染基于 Yii2 参数配置的 Google Tag Manager <script>
和 <noscript>
片段。此外,您还可以将其注册为组件,并使用它来触发 dataLayer.push
请求。
安装
使用 composer
composer require "mainaero/yii2-gtm-widget"
配置
添加到您的 params-local.php
文件中
'gtm_id' => '<YOUR_GTM_ID_WITHOUT_GTM_PREFIX> (required)', 'gtm_env' => '<YOUR_ENVIRONMENT_QUERY_STRING> (optional)'
例如:
'gtm_id' => '1A2B3CD', 'gtm_env' => '>m_auth=<TOKEN>w>m_preview=<ENV_ID>>m_cookies_win=x'
如果您未设置 gtm_id
参数,此小部件将返回空字符串。
作为组件使用
如果您想将其作为组件使用,请将以下代码添加到您的 main.php
配置文件中
'components' => [ ... 'gtmDataLayerPush' => [ 'class' => 'mainaero\yii\gtm\component\DataLayerPush' ], ... ]
使用方法
在您的视图文件中
<?php use mainaero\yii\gtm\widget\GTM; ...
渲染一个 <script>
片段
<?= GTM::widget(); ?>
它将渲染
<!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://#/gtm.js?id='+i+dl+'<YOUR_ENVIRONMENT_QUERY_STRING>';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-<YOUR_ID>');</script> <!-- End Google Tag Manager -->
渲染一个 <noscript>
片段
<?= GTM::widget(['type' => 'noscript']); ?>
它将渲染
<!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://#/ns.html?id=GTM-<YOUR_ID><YOUR_ENVIRONMENT_QUERY_STRING>" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) -->
用于触发 dataLayer.push
在您的控制器中添加一些内容
Yii::$app->gtmDataLayerPush->add(['event' => 'myEvent', 'eventCategory' => 'myCategory']);
在您的视图或布局文件中某处输出它
<?= GTM::widget(['type' => 'dataLayerPush']) ?>
您可以将此片段留在布局文件中,因为它只有在您之前添加了某些内容时才会渲染内容。