|

【教程】- GTM模板来了,定制你自己的个性化标签

Google Tag Manager的开发团队一直在努力打造更易用的标签部署环境。本篇极诣就将通过一个实例介绍GTM模板的应用。先看效果:

GTM终于有百度统计标签啦!
GTM终于有百度统计标签啦!

上图实例中,只需填写你的百度统计ID就可以轻松建立一个百度统计的标签。对于还未为GTM建立定制自带标签的第三方来说,我们使用这个方法可以解决许多重用性问题,在各个Container(容器)中都可以使用。

只需填写ID就可以生成百度统计代码
只需填写ID就可以生成百度统计代码

接下来我们就看看,如何使用GTM的标签模板来自定义我们的常用标签。

从左侧菜单进入Templates,在Tag Templates右侧点击New进入Template Editor。

为模板添加基本信息和图标
为模板添加基本信息和图标

图片推荐正方形。你可以在右侧看到预览效果。接下来我们为这个标签模板添加一个必填字段,点击Info旁的Fields。再点击Add Field按钮。

添加参数baid(Baidu Analytics ID)
添加参数baid(Baidu Analytics ID)

你还可以对这个参数进行设置,比如设置一个默认的值,又比如规定不能为空等等。

接下来我们就要进入代码编写的阶段了,这也是本教程最重要的部分。

我们需要了解的是这里用到的JavaScript脚本在GTM的沙盒中,因此一些我们常用的全局变量并不可用。换之而已,我们必须使用GTM提供的API来实现。

百度统计必须调用来自百度的外部脚本,在此我们使用injectScript方法。

使用require导入injectScript
使用require导入injectScript

上面就是完整代码,你可能注意到,我们调用了data.baid。这就可以把参数传入其中。injectScript(url, onSuccess, onFailure);最终会调用百度脚本并把ID传给百度。

你可能还注意到我们使用了queryPermission方法。这是为了保证安全性。我们可以在Permissions中设置允许调用的脚本的域。

设置允许调用的脚本的域
设置允许调用的脚本的域

随后我们就大功告成了,Save后点击Test看效果。当然也可以使用Preview然后在开发者工具(F12)中查看百度统计的pixel是否被调用。

完成后填入ID测试效果
完成后填入ID测试效果

那么这个实例教程我们就完成了。你可以将这个模板应用于所有容器。当未来百度统计代码调用发生改变时,你并不需要对每一个容器进行更新,而只需要对模板进行调整即可。

最后,还记得我们层级介绍过正则表达式吗?。你可以验证用户是否输入正确的百度统计ID。

为输入值添加正则表达式校验
为输入值添加正则表达式校验

如果你感兴趣,GTM大神Simo Ahava为此提供了更为详尽GTM Template的教程。Save按钮旁边的菜单还有导入导出功能,你可以点击这里下载,直接导入本篇极诣演示的例子。好了,本篇极诣为你带来的教程的完整代码如下:

// Enter your template code here.
var log = require(‘logToConsole’);
log(‘data =’, data);
// Require the necessary APIs
const logToConsole = require(‘logToConsole’);
const injectScript = require(‘injectScript’);
const queryPermission = require(‘queryPermission’);
const url = ‘https://hm.baidu.com/hm.js?’ + data.baid;
// If the script loaded successfully, log a message and signal success
const onSuccess = () => {
log(‘Maxket.com: Script ‘+ url +’ loaded successfully.’);
data.gtmOnSuccess();
};
// If the script fails to load, log a message and signal failure
const onFailure = () => {
log(‘Maxket.com: Script ‘+ url +’ load failed.’);
data.gtmOnFailure();
};
// If the URL input by the user matches the permissions set for the template,
// inject the script with the onSuccess and onFailure methods as callbacks.
if (queryPermission(‘inject_script’, url)) {
injectScript(url, onSuccess, onFailure);
} else {
log(‘Maxket.com: Script ‘+ url +’ load failed due to permissions mismatch.’);
data.gtmOnFailure();
}
// Call data.gtmOnSuccess when the tag is finished.
data.gtmOnSuccess();

类似文章