在Google Tag Manager中无法通过变量获取整数值?
QAPage结构化数据整数变量渲染问题
问题详情
我配置QAPage结构化数据时,文本变量{{QuestionTitle}}、{{QuestionDes}}能正常获取值,但整数类型的{{QAnswerCount}}和{{QupvoteCount}}始终无法正确渲染。代码如下:
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "QAPage", "mainEntity": { "@type": "Question", "name": "{{QuestionTitle}}", "text": "{{QuestionDes}}", "answerCount": {{QAnswerCount}}, "upvoteCount": {{QupvoteCount}} // 其他字段省略 } } </script>
不管给这两个整数变量加不加引号,最终页面渲染后都会出现GTM动态代码,错误示例:
"@context": "https://schema.org", "@type": "QAPage", "mainEntity": { "@type": "Question", "name": "QuestionTitle", "text": "Question Description", "answerCount": *google_tag_manager["rm"]["183766654"](2)*, "upvoteCount": *google_tag_manager["rm"]["183766654"](3)*, "datePublished": "May 2, 2024" // 其他字段省略 }
参考官方规范后仍找不到问题根源。
解决思路
- 调整渲染优先级:GTM动态代码替换了整数变量,说明模板引擎没在GTM执行前把变量替换成实际数值。要确保
{{QAnswerCount}}和{{QupvoteCount}}先被渲染为纯整数,再交由GTM处理。 - 强制类型转换:如果使用的模板引擎支持,给变量添加类型转换过滤器(比如
{{QAnswerCount | int}},具体语法依模板引擎而定),保证输出的是纯数字而非动态代码。 - 排除GTM干扰:将结构化数据脚本放在GTM加载代码之前,或者在GTM中配置规则,不对这些JSON字段进行动态替换。
- 后端直接生成完整JSON:若上述方法无效,可让后端直接生成完整的结构化数据JSON字符串,前端直接输出,避开模板引擎和GTM的干扰。
内容的提问来源于stack exchange,提问作者Soumitra Mahato
相关产品推荐
相关产品推荐

