2010-03-12 75 views
2

我有一个非常愚蠢的问题,已经花了我很多时间。Drupal中较长的表单字段

我已经创建了一个带有URL的内容模板。当我查看它的HTML代码时,我在form标签中看到一个很大的“maxlength = 256”。我想扩大这个领域的长度,因为我的客户希望输入非常长的链接(超过500个字符)。任何想法如何我可以改变它?当我通过代码进行通用搜索时,我发现有256次出现,但长度可能与数据库中的某处相同。我当然已经把数据库字段变成了一个更长的varchar(1024对我来说有点诗意),所以这是我不必担心的。

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

我正在使用Drupal 6.14。

+0

你是什么意思的内容模板?你的意思是一个自定义的CCK领域? – 2010-03-13 01:28:14

+0

是的,我的意思是一个自定义的CCK字段。 – 2010-03-15 17:27:33

回答

0

Yahoooooo!我修好了,感谢有用的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增加),但它工作的第一要素! Yippeee!

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; 
    } 
} 

只需用的 您的主题名称(如果在的template.php)更换模块或与 自定义模块您使用的名称替换它。

要找到表单的id,用萤火虫检查元素。 url字段的id也一样。

让我知道你是否需要更多的细节。

编辑:正如指出的,它看起来像你不能从主题级调用钩子。

要做到这一点的最好方法是为您的网站创建一个小的自定义模块。你可以把它叫做SITENAME_customizations。

所有你需要的是一个名为MODULENAME.info一个简单的.info文件,这将是这个样子:

name = SITE customizations 
description = "Customizations" 

您还需要一个MODULENAME.module文件,该文件是在那里你会包括你的电话hook_form_alter

PS。确保你没有关闭你的.module文件中的php标签(?>)。

+0

你确定hook_form_alter可以在主题级调用吗? – 2010-03-13 23:39:49

+0

看着那个。我通常将自定义分解为自定义模块,所以我从未尝试在主题级添加。 它看起来不像你可以。感谢您检查 – 2010-03-14 02:23:46

+0

好吧,我做了以下事项,请注意我是Drupal的总noobot: 1.我在sites/all/modules中创建了一个名为“longfield”的模块。 2.我创建了一个名为“longerfield.module”的文件和一个名为“longerfield.info”的文件。 3.我得到的代码与longerfield.module以下解析: 功能longerfield_form_alter(&$形式,&$ form_state,$ form_id){ 如果($ form_id = '节点形式'){$ 形式['edit-field-page-boeken-0-data-url'] ['#maxlength'] = 1024; } } 您声明:您还需要一个“longerfield.module”文件,这是您包括呼叫。我没有得到最后的评论? – 2010-03-15 17:50:45