【发布时间】:2021-07-09 20:57:06
【问题描述】:
我的 CMS 中有一个编辑器类型字段(我使用 Craft CMS),用户可以在其中输入一些“变量”,如下所示:
“你好,{name}”
唯一的问题是,当启用 HTML 净化器时,它会去除所有这些在 href 属性中的“变量”,并用代码替换它们。 例如:
<a href="tel:{client tel}">{client tel}</a>
变成
<a href="tel:7207">{client tel}</a>
我当然可以禁用 HTML 净化器,但我宁愿不这样做。我只是很难找到正确的净化器配置来允许所需的行为。有人可以帮忙吗?
【问题讨论】:
-
我无法确认这种行为
-
我刚刚在使用 Redactor 插件的全新 Craft3 安装中对此进行了测试。虽然我在任何地方都没有找到净化器的开/关开关,但 HTML 输出与预期的一样。我确实尝试过使用和不使用净化过滤器。 ``` {% for entry in entries %}
- {{ entry.getLink() }} – {{ entry .test|purify }}
{% endfor %} ``` 输出是:```你好, {name}
``` 你想在这里做什么?预渲染电子邮件模板?非 Twig 占位符有什么用? -
通常的方法是(1)如果您需要跨会话保存未纯化的 HTML(不确定您是否这样做,我不知道您的用例是什么,确切地说), (2) 每当您需要在预览中显示它时,在输出时对其进行净化;然后当你想用值渲染它时(3)做变量替换first,(4)在结果上运行HTML Purifier。无论如何,您实际上都希望在结果上运行 HTML Purifier,因为“名称”可能是“
<script>alert(1);</script>”。不幸的是,我不熟悉 Craft CMS 以及它是否可以让您调整订单。
标签: php htmlpurifier craftcms