2

我有一个非常愚蠢的问题,已经花费了我很多时间。

我在其中创建了一个带有 URL 的内容模板。当我查看它的 HTML 代码时,我在表单标签中看到了一个很大的“maxlength=256”。我想扩展此字段的长度,因为我的客户希望输入非常长的链接(超过 500 个字符)。知道如何改变它吗?当我通过代码进行通用搜索时,我看到了很多 256 的出现,但长度也可能在数据库中的某个地方。我当然已经将数据库字段设置为更长的 varchar(1024 对我来说听起来很诗意),所以我不必担心。

我认为这很愚蠢,但正如我们所知,客户永远是对的。

我正在使用 Drupal 6.14。

4

2 回答 2

2

您想在您的 Templete.php 或自定义模块中使用 hook_form_alter()。

它看起来像这样:

MODULE_form_alter(&$form, &$form_state, $form_id) {
  if($form_id = 'name_of_form_you_want_to_alter') {
    form['name_of_url_field']['#maxlength'] = 500;
  }
}

只需将 MODULE 替换为您的主题名称(如果在 template.php 中)或将其替换为您使用的自定义模块的名称。

要查找表单的 id,请使用 firebug 检查元素。url 字段的 id 也是如此。

如果您需要更多详细信息,请告诉我。

编辑:正如所指出的,您似乎无法从主题级别调用挂钩。

解决此问题的最佳方法是为您的站点创建一个小型自定义模块。您可以将其命名为 SITENAME_customizations。

您只需要一个名为 MODULENAME.info 的简单 .info 文件,它看起来像这样:

name = SITE customizations
description = "Customizations"

您还需要一个 MODULENAME.module 文件,您将在其中包含您的hook_form_alter调用。

PS。确保不要关闭?>.module 文件中的 php 标签 ( )。

于 2010-03-13T02:50:13.493 回答
0

雅虎!我修复了它,感谢有用的 Drupal 页面: http ://drupal.org/node/300705

我发现我可以在表单完全生成后对其进行编辑。Erik 提出的解决方案很好,但似乎不适用于 CCK 字段。在我的情况下,如果不是因为需要首先发生的这一生成步骤,Erik 的解决方案可能会奏效。

我的新代码如下:

function longerfield_form_alter(&$form, &$form_state, $form_id) {
      $form['#after_build'][] = 'longerfield_after_build';
    }

function longerfield_after_build($form, &$form_state) {
  // This is for a node reference field:
  $form['field_page_boeken'][0]['data']['url']['#maxlength'] = 1024;
  return $form;
}

现在,我也看到它很难看,尤其是因为这里可能还有其他表单元素(只是从 0 开始递增),但它适用于第一个元素!耶!

于 2010-03-16T19:39:28.163 回答