2010-03-12 80 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