妙用hook_menu,让你的站点配置在Drupal后台占有一席之地

Submitted by admin on Wed, 10/15/2014 - 15:31

光看文字,可能不太明白,下面上图:

drupal-admin-menu.png

这是admin/config页面的显示效果。右上角的test pane是我们自己加上去的。下面的代码演示如何实现这种效果:

/**
 * Implement hook_menu().
 */
function test_menu() {
  $items['admin/config/test'] = array(
    'title' => 'Test',
    'page callback' => array('system_admin_menu_block_page'),//秘诀就是这个函数了。
    'position' => 'right',//两个选项,left或right,决定显示的位置。
    'weight' => -100,//决定显示的排序,-100挺小的,所以排在右上角。
    'access arguments'  => array('access administration pages'),
    'file' => 'system.admin.inc',
    'file path' => drupal_get_path('module', 'system'),
  );
  //两个子菜单路径配置,需要遵循一定的规则。如果定义了admin/config/test,那么子菜单只能是这样子:admin/config/test/[path-name],这点需要特别注意。
  $items['admin/config/test/general-settings'] = array(
    'title' => 'General Settings',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('test_admin_settings_form'),
    'access arguments'  => array('access administration pages'),
    'file' => 'test.admin.inc',
    'type' => MENU_NORMAL_ITEM,
  );
  $items['admin/config/test/mail'] = array(
    'title' => 'mail templates',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('test_mail_settings_form'),
    'access arguments'  => array('access administration pages'),
    'file' => 'test.admin.inc',
    'type' => MENU_NORMAL_ITEM,
  );
  return $items;
}