如何在特定MODX页面添加CSS与JS?解决TinyMCE拦截问题
解决方案:MODX页面插入MailChimp代码绕过TinyMCE拦截
针对你遇到的问题,这里有三个实用的最优方案:
方案1:Chunk+极简Snippet组合(推荐)
这是MODX里最灵活且安全的方式,能精准控制代码插入位置,还能复用代码:
- 先创建一个Chunk(比如命名为
MailchimpNewsletterCode),把你的CSS和JS代码完整粘贴进去,包括<style>和<script>标签以及document.write的内容。 - 再创建一个极简Snippet(比如
OutputMailchimpCode),代码只需要一行:return $modx->getChunk('MailchimpNewsletterCode'); - 回到TinyMCE编辑的目标页面,在你需要插入代码的位置,直接插入Snippet标签
[[!OutputMailchimpCode]],页面渲染时就会把代码输出到指定位置,完全不会被TinyMCE拦截。
方案2:调整TinyMCE配置允许标签
如果只是单个页面需要插入,且信任后台编辑者,可以直接修改TinyMCE的过滤规则:
- 进入MODX管理器的「系统设置」,搜索
tinyhtml_valid_elements - 在原有配置值的末尾添加
,<style>,<script>[*](注意前面的逗号) - 保存后回到页面编辑,就能直接在TinyMCE里粘贴
<style>和<script>代码,不会再被拦截。
注意:这个设置是全局的,所有用TinyMCE的页面都会允许这些标签,若有非可信用户编辑页面,谨慎使用。
方案3:用Raw类型的Template Variable(TV)
适合单个页面定制代码,无需写Snippet:
- 创建一个新的TV,名称比如
CustomMailchimpCode,类型选择「Textarea (Raw)」——这种类型的TV不会经过任何过滤,直接保存原始代码。 - 打开目标页面的模板,在需要插入代码的位置添加标签
[[*CustomMailchimpCode]] - 编辑目标页面时,切换到「TV」标签页,把你的CSS和JS代码粘贴到这个TV的输入框里,保存即可。
内容的提问来源于stack exchange,提问作者Bijan
相关产品推荐
相关产品推荐

