0

您好,我是使用 Drupal 的新手,在我的进步中遇到了障碍。我一直在使用 CCK 向我的表单添加新的内容类型。我想知道是否有任何方法可以添加到生成的表单中,以便我可以包含元素并插入可视 html 代码,如 head 规则等。我已经涉足了 hook_form_alter(),但它似乎对我没有帮助在我的努力中。我已经通过调整 tpl.php 文件等并没有取得任何进展。如果互联网上有任何了解此事的人,我们将不胜感激。

这只是我想在表单中执行的一个示例: 1. 在 DIV 中包含字段元素 2. 将 HTML 内容添加到表单中

4

3 回答 3

0

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

您需要像这样为表单设置主题:

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

功能 mymodule_theme($existing, $type, $theme, $path) {
    'your_form_id' => 数组(
        '参数' => 数组('form' => NULL),
        '模板' => '我的模板',
     )
}

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

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

<?php
打印 drupal_render($form['a_form_element']);
打印'<h2>等等等等……</h2>';
打印 drupal_render($form['another_form_element']);
// 这个用于渲染所有剩余的项目,比如隐藏项:
打印 drupal_render($form);

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

于 2010-04-06T10:16:25.937 回答
0

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

于 2010-04-06T04:11:45.737 回答
0

原始 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 安全性。

于 2014-06-21T00:20:41.870 回答