URL Adob​​e DTM 中的类型层次结构

URL Type Hierarchy in Adobe DTM

我正在尝试创建一个页面类型层次结构,我可以在其中使用页面层次结构以及道具和 evar,使用页面 URL。简而言之,我的 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 的每个单独部分捕获到单独的数据元素中?或者我的方法是否矫枉过正。

Create a Data Element

下面将创建一个 数据元素,其中 return 是一个包含最多 4 个元素的数组,具体取决于 [=157] 中有多少目录级别=].

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

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

选择类型 Custom Script并单击打开编辑器

在代码框中添加以下代码:

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

完成后,保存更改

Populate the Hierarchy Variable

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

转到概览>Adobe Analytics 工具配置>综合浏览量和内容

层次结构 下,下拉菜单中的 select Hierarchy1(默认显示)。

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

将其他 3 个字段留空。

保留 Delimiter 作为默认逗号 ,(这里放什么都无所谓)。

注意: DTM 将 returned 数组(String(Array)Array.toString())从 数据元素 [= =127=],这实际上与 Array.join(',') 相同。这就是为什么上面显示仅将 Data Element 引用放在第一个字段中,而 Delimiter 被忽略的原因。

如果您的实施使用逗号以外的定界符,请参阅下面的附加说明。

Additional Notes

填充其他变量

您还可以参考 %hier1% 来填充 全局变量 部分中的其他变量字段。请注意,数据元素将使用默认逗号分隔符进行字符串化。

或者,您可以考虑使用 Dynamic Variable 语法(例如 D=h1)作为值,以缩短请求 URL。如果您使用的是最新的 AppMeasurement 和 Marketing Cloud Service 库,这没什么大不了的(如果请求 URL 太长,库将自动使用 POST 请求而不是 GET 请求)。

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

您可以使用 _satellite.getVar('hier1') 到 return 数据元素。请注意,此 return 是一个 数组 ,例如['foo','bar'],因此您需要使用 .join() 连接到单个分隔字符串值。

使用不同的定界符

如果您的实现使用逗号以外的定界符 (,),并且您对所有变量使用相同的备用定界符,则可以更新 数据元素这样:

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

其中 [d] 替换为您的分隔符。请注意,这现在将导致 数据元素 变为 return 单个串联的 String 值而不是 Array。在 DTM 字段中使用 %hier1% 语法保持不变,但您将不再需要在 自定义代码 框中使用 .join()

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

捕获超过四个目录级别

由于您不再尝试在四个 hierarchy 字段中输入值,您可以考虑将更多级别推送到 hier1 或其他变量。

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