You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LifeRay CMS 7.1注入Matomo追踪脚本遇HTML转义问题求助

解决Liferay 7.1中Matomo追踪脚本被转义的问题

可能的原因与对应修复方法

1. 确认脚本注入字段的类型

Liferay 7.1提供的全站脚本注入字段有明确区分:部分纯文本类字段默认会转义HTML/JS标签,而“页脚HTML”“自定义HTML”这类字段支持直接插入脚本。

  • 进入控制面板→站点→站点设置→外观→高级,检查你使用的注入字段,确保选择的是支持HTML/JS的字段(比如“页脚HTML”),而非纯文本字段。

2. 调整主题模板的输出逻辑(自定义主题场景)

如果站点使用自定义主题,模板可能对注入内容做了强制转义:

  • Freemarker模板:打开主题的portal_normal.ftl,找到输出注入内容的代码,将${theme.getLayout().getDescription()}修改为不转义的输出:${theme.getLayout().getDescription('UTF-8', false)?no_esc}
  • Velocity模板:修改为$themeDisplay.getLayout().getDescription('UTF-8', false)(第二个参数false表示关闭转义)

3. 检查XSS防护配置

Liferay的XSS防护规则可能拦截了脚本标签,可针对性调整:

  • 进入控制面板→配置→系统设置→安全→XSS防护
  • 在“允许的HTML标签”中添加<script>标签(注意:此操作会降低XSS防护级别,仅在完全信任注入内容的前提下操作)
  • 或检查“过滤模式”,若为“严格模式”,可尝试改为“宽松模式”(需评估安全风险)

4. 直接在主题模板中硬编码脚本(最可靠方案)

如果以上方法无效,直接修改主题模板添加脚本:

  1. 导出当前主题:控制面板→外观→主题→找到当前使用的主题,点击“导出”
  2. 解压主题包,找到src/main/resources/META-INF/resources/templates/portal_normal.ftl(Freemarker)或portal_normal.vm(Velocity)
  3. 在</body>标签前插入Matomo追踪脚本,示例:
    <!-- Matomo Tracking Code -->
    <script type="text/javascript">
      var _paq = window._paq = window._paq || [];
      _paq.push(['trackPageView']);
      _paq.push(['enableLinkTracking']);
      (function() {
        var u="//your-matomo-url/";
        _paq.push(['setTrackerUrl', u+'matomo.php']);
        _paq.push(['setSiteId', '1']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
      })();
    </script>
    <!-- End Matomo Code -->
    
  4. 重新打包主题为.zip,上传到Liferay并部署

5. 对比同版本正常站点的配置

既然其他同版本虚拟机的站点可正常运行,重点对比以下差异:

  • 两个站点使用的脚本注入字段是否一致
  • XSS防护的配置参数是否相同
  • 主题是否为同一版本,模板输出逻辑有无区别

内容的提问来源于stack exchange,提问作者Zhronne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:33:28