URL Adobe 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)
。
我正在尝试创建一个页面类型层次结构,我可以在其中使用页面层次结构以及道具和 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)
。