原始HTML CCK字段(Drupal 6) - 没有过滤器,格式或编辑器
简单修复!只需使用纯文本格式即可过滤未经过滤的HTML。然后在构建节点时将其转换回字段.tpl中的html。
CCK字段上的纯文本格式会将HTML标记转换为实体特殊字符(这样可以使它看起来像页面上的代码而不是实际的html标记)。它存储($文本,ENT_QUOTES, 'UTF-8')Drupal的check_plain的()函数中使用PHP的用htmlspecialchars编码的字符串。
解码它的最简单方法是在字段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控制:
•content-field.tpl.php
•content-field- [your_field_name] .tpl.php
内容field.tpl.php从CCK的contrib进入主题文件夹的副本,这是一个重写的contrib,使其在主题可用,并且不应该被修改(除非你想改变的主题中的所有字段) 。字段特定文件也是tpl的副本,一旦覆盖文件存在,它将起作用。然后在字段tpl文件中解码为html:
•// print $ item ['view'];
•print html_entity_decode(strip_tags($ item ['view']),ENT_QUOTES);
Drupal版本注:
Drupal 7和Drupal 8中的tpl文件略有不同。但是html_entity_decode()是一个不会因Drupal版本而改变的php函数。
安全说明:
获取原始HTML的这种解码技巧违背了Drupal为文本格式安全性而构建的方式。这意味着拥有编辑页面权限的任何人现在都有权编辑html结构,并在页面上添加脚本标记。这可能会破坏布局,并可能构成危险。您在这里依赖于安全性的编辑权限,而不是Drupal的正常Formats-per-Role安全性。