Adobe DTM数据元素更新

Mic*_*hns 2 adobe adobe-analytics

我正在寻找一种动态更新DTM中预定义数据元素的方法.一旦页面加载并且数据元素被初始化,就无法更新它们,_sattelite.setVar()不起作用.我可以动态创建数据元素,但它不会在页面之间持续存在.例如:

var currElementName = this.getAttribute('data-analytics-tracking-name');
_satellite.setVar('custom link name', currElementName);
Run Code Online (Sandbox Code Playgroud)

有什么建议?我问这个是因为我将使用MVC框架,我想将一些数据存储在DTM数据元素中,并随着视图的变化而更新.谢谢!

Cra*_*ent 5

为了将持久数据元素设置为新值,您需要首先更新数据元素所基于的任何源,然后使用_satellite.getVar('element_name_here')强制评估数据元素.

这里的关键是在页面加载时,持久数据元素的操作顺序基本上是:

  1. 寻找卫星cookie并返回该值
  2. 寻找对指定的目标类型(如路径为(JS VAR) JS对象)和返回值
  3. 返回默认值

但是当您明确调用时 _satellite.getVar('Example'),操作顺序是:

  1. 寻找对指定的目标类型(如路径为(JS VAR) JS对象)和返回值
  2. 寻找卫星cookie并返回该值
  3. 返回默认值

数据元素示例:

名称:示例

键入: JS对象

路径: someVariable

默认值:默认值

请记住以下值:会话

所以,假设我在页面上有以下内容(在DTM脚本标记之前设置):

someVariable = 'foo';
Run Code Online (Sandbox Code Playgroud)

这将使一个名为"Example"的数据元素可以引用,%Example%或者_satellite.getVar('Example')根据上下文引用.

在会话期间,数据元素将具有该值"foo".所以要改变它,你会做以下事情:

someVariable='bar';
_satellite.getVar('Example');
Run Code Online (Sandbox Code Playgroud)

您可以在自己的脚本中的某个地方调用它,或者如果您想将其添加到例如页面加载规则的混合中,您可以将其作为条件添加到Criteria > Data > Custom代码框中(注意:如果您将其添加到此处,请添加return true;为第3行)等..

作为替代方案,如果您感觉更冒险,或者需要为数据元素设置进行解决(例如,您的数据元素是自定义脚本类型,您需要回避其中的逻辑).

如果将数据元素配置为持久性,则会设置名为的cookie

_sdsat_[data element name]

所以在上面的例子中,它设置了一个名为的cookie

_sdsat_Example

因此,如果您真的想要,您只需使用新值更新cookie,然后让默认的操作顺序返回(现在更新的)cookie值.(注意:由于javascript无法使cookie过期,如果您将范围设置为"访问者",则可以将过期时间设置为2年,这就是DTM所做的事情)

  • @MichaelJohns - 您可以在`_satellite.data.customVars`对象中找到初始值(如果存在).如果它返回null/undefined,请将其设置为您的值,然后返回它.`if(!_ satellite.data.customVars.rvalue){_ satellite.data.customVars.rvalue ='初始数据元素值'; } return _satellite.data.customVars.rvalue;` (2认同)