Zikula 1.3.9 News模块无法兼容Google异步广告脚本问题求助
嘿,我之前维护Zikula站点时也碰到过一模一样的问题——1.3.9版本的News模块会自动转义HTML脚本内容,导致Google广告代码直接以纯文本形式显示在页面上。这主要是因为模块默认的内容过滤机制会拦截<script>这类标签,下面是几个亲测有效的解决办法:
调整News模块的HTML过滤规则
Zikula 1.3.9用HTMLPurifier做内容过滤,你可以进入News模块的后台配置页面,找到「内容过滤设置」相关选项。把Google广告需要的标签(比如<script>、<ins>)和专属属性(data-ad-client、data-ad-slot等)添加到允许列表里。保存设置后重新编辑文章粘贴广告代码,应该就能正常解析了。直接修改模块模板嵌入广告
如果不想全局调整过滤规则,更稳妥的方式是修改News模块的模板文件。找到站点根目录下的modules/News/templates/文件夹,比如文章详情页的模板view.tpl,在你想展示广告的位置(比如文章开头或结尾)直接插入完整的Google异步广告脚本:<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-你的广告ID" data-ad-slot="你的广告槽位ID" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>替换完专属ID后,记得清空Zikula的缓存(后台有「清除缓存」选项),确保模板修改生效。
单篇文章禁用HTML过滤
如果你只是少数几篇文章需要放广告,可以在编辑文章时留意编辑器的选项——有些Zikula内置编辑器会提供「原始HTML模式」或者「禁用过滤」的开关。开启这个开关后直接粘贴广告代码,编辑器就不会转义你的脚本内容了。不过这个方法要注意权限控制,只给可信的编辑人员开放,避免安全风险。
内容的提问来源于stack exchange,提问作者Terence Scott

