原始 HTML CCK 字段 (Drupal 6) - 没有过滤器、格式或编辑器
简单修复!只需对未过滤的 HTML 使用纯文本格式。然后在构建节点时将其转换回 .tpl 字段中的 html。
CCK 字段上的纯文本格式会将 HTML 标记转换为实体特殊字符(这会使它看起来像页面上的代码,而不是实际的 html 标记)。它将使用 php 的 htmlspecialchars($text, ENT_QUOTES, 'UTF-8') 编码的字符串存储在 drupal 的 check_plain() 函数中。
最干净最简单的解码方法是在字段 tpl 文件中。这避免了钩子、钩子顺序问题、循环错误和性能问题。这是通过将 tpl 文件添加到基本主题来完成的:hq_base、odyssey_base 和 odyssey_admin。下面是 drupal 如何在 cck 节点编辑表单上解码纯文本: print html_entity_decode(strip_tags($text), ENT_QUOTES); 注意 - html_entity_decode 在解码回 html 时将 php 标签转换为 html 注释。以下是具有正确命名约定的示例文件,可让 php 控制字段:
•内容字段.tpl.php
•内容字段-[your_field_name].tpl.php
content-field.tpl.php 是从 cck contrib 到主题文件夹的副本,这是一个contrib 覆盖以使其在主题中可用,不应修改(除非您想更改主题中的所有字段) . 字段特定文件也是 tpl 的副本,一旦覆盖文件存在,它将起作用。然后在字段tpl文件中解码为html :
• // 打印 $item['view'];
•打印 html_entity_decode(strip_tags($item['view']), ENT_QUOTES);
Drupal 版本 注意:Drupal 7 和 Drupal 8 中的 tpl 文件略有不同。但是 html_entity_decode() 是一个 php 函数,不会因 Drupal 版本而改变。
安全说明:这种获取原始 HTML 的解码技巧与 Drupal 为文本格式安全而构建的方式背道而驰。这意味着任何有权编辑页面的人现在都有权编辑 html 结构,并在页面上添加脚本标签。这可能会破坏布局,并且可能很危险。您在这里依靠编辑权限来保证安全性,而不是 Drupal 的正常 Formats-per-Role 安全性。