在Drupal中将HTMl添加到CCK

时间:2010-04-06 04:00:46

标签: drupal cck

你好我是一个使用Drupal的新手,并且在我的进度中遇到了一个障碍。我一直在使用CCK向表单添加新的内容类型。我想知道是否有任何方式添加到生成的表单,以便我可以包含元素,并插入像头规则等可视化的HTML代码。我已经涉及hook_form_alter(),它似乎没有帮助我在我的努力。我一直在调整tpl.php文件等,并没有取得任何进展。如果网络中有任何人知道这方面的知识,我们将非常感谢您的建议。

以下是我希望在表单中执行的操作示例: 1.包含DIV中的字段元素 2.将HTML内容添加到表单

3 个答案:

答案 0 :(得分:0)

如果要为a自定义标记,可以为其创建主题函数,并使表单与hook_form_alter一起使用。这与CCK无关,CCK用于自定义内容类型,因此您可以向内容类型添加其他内容。

答案 1 :(得分:0)

hook_form_alter无法帮助您更改包含cck字段的编辑表单,因为在hook_form_alter调用后添加了cck字段。

你需要像这样主题你的表格:

创建一个模块并将此钩子实现放入其中:

function mymodule_theme($existing, $type, $theme, $path) {
    'your_form_id' => array(
        'arguments' => array('form' => NULL),
        'template' => 'my_template',
     )
}

然后在模块目录中创建一个名为my_template.tpl.php的文件 现在清空缓存。

在该文件中,您可以单独呈现表单元素,如下所示:

<?php
print drupal_render($form['a_form_element']);
print '<h2>blah blah blah...</h2>';
print drupal_render($form['another_form_element']);
// this one is for rendering all the remaining items, like hiddens:
print drupal_render($form);

在开发过程中使用 devel 模块。它包含许多有用的工具,使开发更容易。

答案 2 :(得分:0)

原始HTML CCK字段(Drupal 6) - 没有过滤器,格式或编辑器

简单修复!只需使用纯文本格式即可过滤未经过滤的HTML。然后在构建节点时将其转换回字段.tpl中的html。

CCK字段上的

纯文本格式会将HTML标记转换为实体特殊字符(这样会使其读取为页面上的代码,而不是实际的html标记)。它在drupal的check_plain()函数中存储使用php的htmlspecialchars($ text,ENT_QUOTES,'UTF-8')编码的字符串。

最简单的解码方法是字段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

content-field.tpl.php是从cck contrib到主题文件夹的副本,这是一个 contrib覆盖,使其在主题中可用,不应修改(除非你想要改变主题中的所有字段)。字段特定文件也是tpl的副本,一旦覆盖文件存在,它将起作用。然后在字段tpl文件中解码为html

•// print $ item ['view'];

打印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安全性。