2010-07-19 172 views
1

我正在尋找一些drupal的初學者資源。我一直在寫我自己的模塊作爲一種教自己開發基礎的方式,因爲我喜歡在Wordpress無法管理的時候讓Drupal進入的想法。 (雖然wordpress很快就像Drupal一樣成熟,但這不是問題的關鍵。)管理菜單

我有模塊顯示在啓用/禁用屏幕上,並且module.install文件起作用。我所堅持的是生成一個管理區域來編輯我正在使用的表中的條目。我在module.admin.inc中有一個module_admin_settings()函數,並在module.module中加上了module.menu()。

但它沒有出現在菜單中,我很難理解爲什麼。所以我希望有人知道一個很好的教程,解釋如何生成管理選項。

回答

2

如果您想要認真對待Drupal開發,我會建議您閱讀Pro Drupal developemnt書。它一直是我讀過的最有用的Drupal書籍。

至於你的問題,創建一個管理部分與創建一個視圖有些不同。你需要做的是。

  1. 實施hook_menu註冊您要使用的網址,你的情況admin/settings/name應該罰款
  2. 實現一個回調函數應該被稱爲當用戶轉到你的。在你的情況下,你不需要實現一個,因爲你應該使用drupal_get_form,但是你需要使用form API創建用戶應該看到的表單。

    你需要把這些信息在你的hook_menu這樣的:

    function modulename_menu() { 
        $items = array(); 
        $items['admin/settings/modulename'] = array(
        'title' => 'Menu item', 
        'description' => 'The description of the menu item. It is used as title attribute and on the administration overview page.', 
        'page callback' => 'drupal_get_form', 
        'page arguments' => array('form_id'), 
        'access arguments' => array('administer modulename'), // access restriction to admins only 
    ); 
        return $items; 
    } 
    
  3. 然後,你需要執行驗證和表單提交處理程序,在您使用system_settings_form,你可以得到很多的爲你完成的工作。

  4. 每當您對hook_menu進行更改時,您需要清除(菜單)緩存,因爲Drupal會緩存此信息以優化性能。

就是這樣。現在你不需要在你的模塊中使用不同的文件。如果模塊很小,所有可以進入.module文件。但是對於更大的模塊,您可以將一些代碼放在.inc文件中以組織您的代碼。 Fx modulename.admin.inc爲您的管理回調/功能,modulename.page.inc爲您的常規回調/功能等

+0

這是我的書。只是我沒有完全按照自己的意願去做。 – YsoL8 2010-07-19 10:39:57

+0

當您閱讀本書時,您可以複製和使用每章的完整代碼示例。你不明白的是什麼。 – googletorp 2010-07-19 11:08:21