访问/查看自定义模块的设置页面

时间:2010-08-18 15:21:36

标签: drupal drupal-6 drupal-modules

我将模块从5升级到6.我只有一个问题: 我可以访问它的设置页面,但看不到它的内容。 这是我的代码:

function agbnagscreen_menu() {
  global $user;
  $items = array();

    if (agbnagscreen_nag($user)) {
//       var_dump($_GET['q']); die();
      drupal_goto(sprintf('%s/%s', AGBNAGSCREEN_NAGURL, base64_encode($_GET['q'])));
      die();
    }

    $items['admin/settings/agbnagscreen'] = array(
     // 'path' => 'admin/settings/agbnagscreen',
      'title' => 'AGB nagscreen',
      'access callback' => user_access('Einstellungen von AGB aendern'), 
      //'access' => user_access('Einstellungen von AGB aendern'),
      'page callback' => 'drupal_get_form',
      'callback arguments' => array('agbnagscreen_settings_fapi'),
    );

    $items[AGBNAGSCREEN_NAGURL] = array(
     // 'path' => AGBNAGSCREEN_NAGURL,
      'title' => 'Allgemeine Geschaeftsbedingungen',
      'access' => TRUE,
      'callback' => 'drupal_get_form',
      'callback arguments' => array('agbnagscreen_fapi'),
      'type' => MENU_SUGGESTED_ITEM,
    );

  return $items;
}

我认为问题是由这一行造成的:

'page callback' => 'drupal_get_form',

这是对的吗?我怎么写它,它有效?

1 个答案:

答案 0 :(得分:1)

您可能需要阅读Drupal menu system (Drupal 6.x)手册页以了解菜单系统的更改:您的hook_menu实施中存在多个问题。

  1. 顶部的条件永远不会触发:Drupal 6仅在重建菜单时调用hook_menu(),而不是在每次加载页面时调用。{/ li>
  2. 没有callback:使用page callback
  3. page callback接受page arguments,而非callback arguments
  4. access:使用access callback
  5. access callback始终是包含函数名称而不是函数的字符串,默认为"user_access":您需要提供access arguments
  6. hook_menu实施的修改版可能是:

    function agbnagscreen_menu() {
      $items = array();
    
      $items['admin/settings/agbnagscreen'] = array(
        'title' => 'AGB nagscreen',
        'access arguments' => array('Einstellungen von AGB aendern'), 
        'page callback' => 'drupal_get_form',
        'page arguments' => array('agbnagscreen_settings_fapi'),
      );
    
      $items[AGBNAGSCREEN_NAGURL] = array(
        'title' => 'Allgemeine Geschaeftsbedingungen',
        'access arguments' => array('access content'),
        'page callback' => 'drupal_get_form',
        'page arguments' => array('agbnagscreen_fapi'),
        'type' => MENU_SUGGESTED_ITEM,
      );
    
      return $items;
    }