Adobe DTM中的URL类型层次结构

时间:2017-01-24 16:52:19

标签: analytics adobe-analytics

我尝试创建一个页面类型层次结构,我可以使用页面URL在页面层次结构以及道具和evars中使用它。简而言之,我的URL看起来像这样:

http://www.domain.com/BrandHomePage/SuperCategory/ProductCategory/Product

思维方式是获取URL并使用数据元素来拆分URL,然后将值捕获到也可以在页面层次结构中使用的单独数据元素中。

var url = "http://www.domain.com/part1/part2/part3/part4"
var parts = url.split('/').splice(2);
console.log(parts);

var baseUrl = parts[0];
var part1 = parts[1];
var part2 = parts[2];
var part3 = parts[3];
var part4 = parts[4]

我的问题是,甚至可以将URL的每个部分捕获到单独的数据元素中吗?或者我的方法是否过度。

1 个答案:

答案 0 :(得分:0)

  

创建数据元素

以下内容将创建一个数据元素,它返回一个包含最多4个元素的数组,具体取决于URL中有多少dir级别。

转到规则 > 数据元素 > 创建新数据元素

名称它“hier1”(没有引号)。

选择输入 Custom Script,然后点击打开编辑器

将以下代码添加到代码框中:

return location.pathname.split('/').filter(Boolean).slice(0,4);

完成后,保存更改

  

填充层次结构变量

以下是在页面视图中填充hier1的示例。

转到概述 > Adob​​e Analytics工具配置 > 网页浏览量&内容

层次结构下,从下拉列表中选择Hierarchy1(默认显示)。

在下拉列表的右侧,在第一个字段中添加%hier1%

将其他3个字段留空。

分隔符保留为默认逗号,(此处放置的内容无关紧要。)

注意: DTM将返回的数组(String(Array)Array.toString())与数据元素进行字符串化,这实际上与执行{ {1}}。这就是为什么上面显示只将数据元素引用放在第一个字段中,并忽略分隔符

如果您的实现使用逗号以外的分隔符,请参阅下面的其他说明。

  

附加说明

填充其他变量

您还可以引用Array.join(',')来填充全局变量部分中的其他变量字段。请注意,数据元素将使用默认的逗号分隔符进行字符串化。

或者,您可以考虑使用Dynamic Variable语法(例如%hier1%)作为值,以缩短请求网址。如果您使用的是最新的AppMeasurement和Marketing Cloud Service库,这不是什么大问题(如果请求URL太长,则lib将自动使用POST请求而不是GET请求)。

使用自定义代码框中的数据元素

您可以使用D=h1返回数据元素。请注意,这会返回数组,例如_satellite.getVar('hier1'),因此您需要使用['foo','bar']连接到单个分隔的字符串值。

使用不同的分隔符

如果您的实现使用逗号以外的分隔符.join()),并且对所有变量使用相同的备用分隔符,则可以更新数据元素如此:

,

return location.pathname.split('/').filter(Boolean).slice(0,4).join('[d]');替换为分隔符。请注意,现在这将导致数据元素返回单个连接的[d]值,而不是String。在DTM字段中使用Array语法保持不变,但您不再需要在自定义代码框中使用%hier1%

如果您的实施对不同的变量使用不同的分隔符,请按照第一部分中的原始说明实施数据元素。仅当分隔符是逗号时,才可以在DTM字段中使用%hier1%语法。对于所有其他分隔符,您需要在自定义代码框中填充变量并使用.join()

捕获超过四个目录级别

由于您不再尝试在四个.join('[d]')字段中添加值,因此您可以考虑将更多级别推送到hierarchy或其他变量。

数据元素中,将hier1中的4更改为您要捕获的目标的最高级别。或者,如果要捕获所有目录级别,请完全删除.slice(0,4);