如何在OpenCart 1.5中正确部署Facebook事件追踪像素代码
解决OpenCart 1.5中Facebook像素代码放置导致的站点地图HTTP头部错误问题
我之前碰到过一模一样的情况,直接在index.php头部塞第三方脚本很容易干扰OpenCart动态页面(比如站点地图)的HTTP头输出——毕竟站点地图需要返回纯XML格式的响应,你加的JS代码会在响应起始位置就输出内容,直接破坏了正确的Content-Type头,这才导致谷歌报HTTP头部错误。
正确的做法是把Facebook像素代码放在主题的header模板里,而不是入口文件index.php:
- 找到你的主题header模板文件,路径一般是:
catalog/view/theme/[你的主题名称]/template/common/header.tpl - 打开这个文件,定位到
</head>标签的位置,把你的Facebook像素代码粘贴到这个标签的上方。这样所有前端用户访问的页面都会正常加载像素,而像站点地图(/sitemap.xml)这类特殊的动态页面不会加载主题header,自然也就不会受到干扰。
具体放置示例如下:
<!-- 在header.tpl的</head>标签前插入代码 --> <!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window,document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1**********7'); fbq('track', 'PageView'); fbq('track', 'InitiateCheckout'); </script> <noscript> <img height="1" width="1" src="https://www.facebook.com/tr?id=177561923016647&ev=PageView &noscript=1"/> </noscript> <!-- End Facebook Pixel Code --> </head>
另外给你提个小建议:你当前的代码全局触发了InitiateCheckout事件,这可能会导致数据统计不准确——最好只在结账页面的模板里单独添加这个事件代码,而不是让它在所有页面都加载执行。
完成放置后,记得访问你的站点地图URL验证一下,查看HTTP响应头是否正常返回Content-Type: application/xml,同时打开前端页面的开发者工具,确认Facebook像素已经正常加载运行。
内容的提问来源于stack exchange,提问作者Akansha Mishra
相关产品推荐
相关产品推荐

