2009-07-01 35 views
3

我正在開發一個模塊,它可以改變添加/編輯節點表單的顯示。我是模塊開發的初學者。drupal form alter

我寫了下面的代碼,它不能正常工作。請告訴我這有什麼問題?

function hook_form_alter(&$form, $form_state, $form_id) { 
    if ($form_id == 'node_form') {  
    drupal_set_message(t('some message.')); 
    } 
} 

這是爲Drupal 6

回答

19

此外,節點添加/編輯表單具有內容類型特定的ID。所以故事的節點是:

function mymodule_form_alter(&$form, $form_state, $form_id) { 
    if ($form_id == 'story_node_form') {  
    drupal_set_message(t('Editing a story node!')); 
    } 
} 

如果你正在尋找捕捉每一個節點的編輯形式,無論哪種類型,試試這個:

function mymodule_form_alter(&$form, $form_state, $form_id) { 
    if (isset($form['#node']) && $form_id == $form['#node']->type .'_node_form') { 
    drupal_set_message(t('Editing a node!')); 
    } 
} 
+0

謝謝你,我可以添加表單中的新字段,但無法更改或刪除現有字段。 – Sharique 2009-07-02 04:29:02

3

你不應該調用函數 「hook_form_alter」,而是 「yourmodule_form_alter」。你的模塊應該是你的模塊文件的名稱,所以如果你的模塊被稱爲「你好」,函數名應該是「hello_form_alter」。

1

你要明白,Drupal使用,如果鉤系統你想做模塊開發。當鉤子在Drupal的某處實現時,它被稱爲hook_something。這種方式的作用是每次模塊想要實現鉤子時,都需要用'modelname'替換'鉤子'。 Drupal會知道它是該鉤子的一個實例,並將其稱爲它。 Drupal在主題圖層中也使用相同的系統,並帶有扭曲。由於它會查看不同的主題功能並根據排名系統對它們進行優先級排序,這使主題能夠覆蓋模塊輸出數據的方式。

0
function hook_form_alter(&$form, $form_state, $form_id) { 
    if ($form_id == 'node_form') {  
    drupal_set_message(t('some message.')); 
    } 
} 

首先必須 「掛鉤」 關鍵詞在模塊的關鍵字..讓假設你的模塊名稱是 「CONTACT_US」 然後

function contact_us_form_alter(&$form, $form_state, $form_id) { 

現在,這個函數有三個變量

  1. $表格
  2. $ form_id
  3. $ form_state

表單alter中最重要的變量是$ form_id,它基本上記錄了哪個表單在頁面中加載。

function contact_us_form_alter(&$form, $form_state, $form_id) { 
    print_r($form_id);exit; // Used to find the form id 
} 

找到form_id後

function contact_us_form_alter(&$form, $form_state, $form_id) { 
    if($form_id=='contact_us_form') 
     // Do your stuff 
} 

注:請檢查您是否正確編寫自定義模塊,並啓用它..也清除緩存