标记管理器上下文中的变量是一段代码片段,它允许您通过标记和触发器检索数据。
Matomo允许您轻松地创建一个新变量。创建新变量时,请考虑将此新变量贡献给官方标签管理器插件通过创建一个拉请求。
标签、触发器和变量都以相同的方式实现,只是JavaScript部分略有不同。一旦您知道如何开发变量,您还将能够开发标记和触发器。
我们将创建一个新变量,它从localStorage.
创建新变量需要使用CLI工具并执行如下命令:
$ ./console生成:tagmanager-variable
这个命令将指导你创建一个变量,并询问一些事情,如插件的名称和你想创建的变量的名称。当它要求你输入变量名时,输入“本地存储”。该命令将创建以下文件:
插件/ $ yourplugin /模板/变量/ LocalStorageVariable.php
让您定义例如变量的类别和定义参数。插件/ $ yourplugin /模板/变量/ LocalStorageVariable.web.js
让您实现JavaScript逻辑来返回本地存储的值。预配置变量是一种特殊的变量,不需要配置,用户可以直接使用。创建一个预配置变量的方式是一样的,除了你需要执行的初始命令是不同的:
$ ./console生成:tagmanager-preconfigured-variable
当您生成一个变量时,生成器将自动创建一些变量翻译键在你的插件/ $ yourplugin / lang / en.json
文件。你可能想要调整创建的键的翻译:
"LocalStorageVariableName": "本地存储","LocalStorageVariableDescription": "这是本地存储的描述","LocalStorageVariableHelp": ""
或者,还可以设置名称、描述和可选帮助文本LocalStorageVariable.php
但建议使用翻译键,以便其他开发人员可以将其翻译成不同的语言。
理想情况下,描述应该保持简短。变量通常不需要帮助文本。
在生成的LocalStorageVariable.php
,您将发现一个名为getCategory ()
.在这里,您可以定义这个变量最适合的类别。您可以从一组预定义的类别中选择,如“页面变量”,“日期”,“性能”,“SEO”和“设备”,或创建自己的类别:
公共函数getCategory(){返回self::CATEGORY_PAGE_VARIABLES;}
在这个例子中,我们使用一个预定义的类别“Page Variables”。要使用自定义类别,只需返回您想要选择的类别的名称:
公共函数getCategory(){返回'My Category';}
您可以选择为您的变量显示一个图标。您所需要做的就是在方法中返回图标文件的路径getIcon ()
是这样的:
公共函数getIcon(){返回'plugins/TagManager/images/MyIcon.png';}
我们建议你把图片放在图片
插件的文件夹。例如,文件本身可能是ajpg
,png
,或svg
理想大小为64x64像素的文件。
在本例中,我们希望让用户配置该变量应返回的项的名称。为此,我们可以配置参数。参数具有相同的API插件设置.
下面是一个关于如何定义参数的示例,您可以稍后在JavaScript部分中使用该参数进行访问parameters.get(“itemName”)
.
公共函数getParameters(){返回数组($this-> makessetting ('itemName', '这是默认值',FieldConfig::TYPE_STRING,函数(FieldConfig $field) {$field->title = '项目名称';$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;$field->description = '请输入您想访问的本地存储项的名称。';$field->validators[] = new CharacterLength($min = 1, $max = 300);}));}
了解更多关于指定参数在我们的专用标签管理器-参数指南。
现在我们开始开发JS部分,它将从本地存储中返回值。这是在文件中完成的LocalStorageVariable.web.js
.基本结构如下所示:
(function(){返回函数(参数,TagManager) {this。得到= function () { // accessing a parameter var itemName = parameters.get('itemName'); // return variable value }; }; })();
实现的变量示例如下所示:
(function(){返回函数(参数,TagManager) {this。get = function () {var itemName = parameters.get('itemName');if (itemName && localStorage){返回localStorage. getitem (itemName);}};};}) ();
在上面的示例中,我们定义了一个匿名JavaScript类,该类实现了得到
方法。每当请求变量的值时,都会执行此方法。您可以访问您所定义的任何参数参数。得到('$parameterName', optionalDefaultValueIfNoneConfigured)
.
您还可以访问一些特殊的变量,如文档
而且窗口
通过参数
对象。例如parameters.document
或parameters.window
.的访问parameters.document
在文档
推荐直接使用,因为它使单元测试更容易。你可以在TemplateParametersAPI参考。
您还可以访问TagManager
实例,它提供了很多围绕DOM、窗口、url、事件、数据层等的帮助实用程序。你可以在TagManagerAPI参考。