我尝试创建一个页面类型层次结构,我可以使用页面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的每个部分捕获到单独的数据元素中吗?或者我的方法是否过度。
答案 0 :(得分:0)
创建数据元素
以下内容将创建一个数据元素,它返回一个包含最多4个元素的数组,具体取决于URL中有多少dir级别。
转到规则 >
数据元素 >
创建新数据元素
名称它“hier1”(没有引号)。
选择输入 Custom Script
,然后点击打开编辑器。
将以下代码添加到代码框中:
return location.pathname.split('/').filter(Boolean).slice(0,4);
完成后,保存更改。
填充层次结构变量
以下是在页面视图中填充hier1
的示例。
转到概述 >
Adobe 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);
。