参数

每个标记、触发器和变量都可以选择定义一个或多个参数。这些参数的API与插件设置

指定参数

下面是一个关于如何定义参数的示例,稍后您可以在标记、触发器或变量的JavaScript部分访问该参数。

公共函数getParameters(){返回数组($ this-> makessetting ($name = 'popupText', $default = '这是默认值',FieldConfig::TYPE_STRING,函数(FieldConfig $field) {$field->title = '弹出文本';$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;$field->description = '请输入文本';$field->validators[] = new NotEmpty();}));}

您可能会注意到一些事情,比如参数名popupText在该参数下,稍后将在Javscript中使用parameters.get(“popupText”),默认值,将在UI中显示给用户的标题,应该使用哪个UI控件等等。

UI控件

您可以在不同的UI控件之间进行选择,例如复选框或选择字段。请查看FieldConfig API有关可用控件类型的详细信息。

选择变量

在标签管理器中,你可以允许用户选择一个变量,而不是只写一个硬编码的值。要做到这一点,只需将模板文件设置为以下值之一:

$field->uiControl = FieldConfig::UI_CONTROL_TEXT;$field->customUiControlTemplateFile = self::FIELD_TEMPLATE_VARIABLE;//一个允许用户选择变量的textarea $field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;$field->customUiControlTemplateFile = self::FIELD_TEMPLATE_TEXTAREA_VARIABLE;$field->customUiControlTemplateFile = self::FIELD_TEMPLATE_VARIABLE_TYPE;$field->uiControlAttributes = array('variableType' => 'MatomoConfiguration');

只显示特定参数

在模板中,您可能希望仅当不同参数具有特定值时才显示某些参数。在下面的例子中,用户可以选择“跟踪类型”。当选择的类型是“Goal”时,我们希望显示另一个字段,让用户输入“Goal ID”。要实现这一点,您可以指定条件财产。在下面的例子中是trackingType == "目标".这意味着只有当用户选择了跟踪类型时,参数才会显示目标

公共函数getParameters() {$trackingType = $this-> makessetting ('trackingType', 'pageview', FieldConfig::TYPE_STRING,函数(FieldConfig $field) {$field->title = '跟踪类型';$field->uiControl = FieldConfig::UI_CONTROL_SINGLE_SELECT;$field->availableValues =数组('pageview' => 'pageview', 'goal' => 'goal',);});返回array($trackingType, $this-> makessetting ('idGoal', ", FieldConfig::TYPE_INT, function (FieldConfig $field) use ($trackingType) {$field->title = '目标ID';$field->条件= 'trackingType == "目标";if ($trackingType->getValue() === 'goal') {$field->validators[] = new NotEmpty();$field->validators[] = new CharacterLength(1500);}}),);

验证值

你有两种方法来验证一个值:

  • 使用许多预定义的验证器之一,例如NotEmptyCharacterLength电子邮件NumberRange
$field->validators[] = new Piwik\ validators \NotEmpty();$field->validators[] = new Piwik\ validators \Email();$field->validators[] = new Piwik\ validators \UrlLike();$field->validators[] = new Piwik\ validators \CharacterLength($min = 1, $max = 500);$field->validators[] = new Piwik\ validators \NumberRange($min = 1, $max = 500);
  • 定义自定义验证像这样调用:
$field->validate = function ($value, Setting $ Setting) {if ($value > 60) {throw new \Exception('时间限制不允许超过60分钟。');}}

您也可以在一个字段中同时使用这两种方法。任何验证器是否会执行之前的习俗验证方法。

转换值

在保存值之前,您可能希望转换值以确保值具有预期的格式。例如,你可能想要确保一个URL总是有这样的协议集:

$field->transform = function ($value, Setting $ Setting) {if (strpos($value, 'http') === false) {$value = 'https://'。美元价值;}返回$value;}

迁移标记以包含新参数

当您向标记模板添加新参数时,所有引用此模板的现有标记将在下一个版本发布后显示为更改。他们将继续这样做,直到每个版本都以某种方式手动更新,并发布另一个版本。为了避免这种情况,可以在迁移脚本中使用一个helper类(可用的Matomo 4.12及以上版本)。

  • 方法中概述的过程,首先需要创建一个迁移脚本扩展数据库页面。
  • 然后,在doUpdate方法中,您可以使用新的迁移助手类来更新所有需要更新的标记。
public function doUpdate(Updater $ Updater){//执行正常方式定义的任何迁移。更新- > executeMigrations (__FILE__, $ this - > getMigrations(更新)美元);//迁移Matomo类型标签到所有包含新配置的字段。$migrator = new NewTagParameterMigrator(MatomoTag::ID, ' someenewparametername ');移居者- > addField(“anotherNewParameterName”);//这是可选的,只有当你添加了多个参数时才需要。移居者- >迁移();//开始标签迁移的处理。}
  • 如果更新的模板类与MatomoTag,只需替换正确的类,它应该具有ID常数。
  • 注意:有一个addField方法,如果添加了多个新参数,则可以根据需要多次调用该方法。如果您只添加了一个,则不需要使用addField方法。
  • 构造函数上有可选的第三个参数,属性上有第二个参数addField方法,该方法允许您指定要给予新参数的值,而不是将其保留为空。

更多的信息

要获得更多信息,请查看FieldConfig API

Baidu