[development] Question on Drupal 6 menus

Peter Wolanin pwolanin at gmail.com
Fri Jan 4 01:53:40 UTC 2008


Khalid,

One thing looks wrong for sure:

'file'           => 'lists.module',

I'm not sure if that's causing the problem, but it instructs the menu
system to include the module file again.  'file' should only be used
with .inc files.

Also, don't use t() anywhere - titles, etc are localized dynamically.

Finally (and most importantly), the access part is wrong.  Since you
are using the defaullt callback (user_access), you can have something
like this:


function lists_menu() {
  $items = array();
  $items['lists'] = array(
    'title'          => 'Mailing lists',
    'page callback'  => 'drupal_get_form',
    'page arguments' => array('lists_subscribe_form'),
    'access arguments'         => array('access content'),
    'type'           => MENU_SUGGESTED_ITEM,
  );
  return $items;
}

> ---------- Forwarded message ----------
> From: "Khalid Baheyeldin" <kb at 2bits.com>
> To: development at drupal.org
> Date: Thu, 3 Jan 2008 20:27:37 -0500
> Subject: [development] Question on Drupal 6 menus
> This is a question for chx, but I posted it publicly so we all benefit from his reply.
>
> I found a weird problem with the menus in D6. Most probably I am missing something
> obvious, but I am missing what it is.
>
>  This does work. Note that the lists inherits from admin, and it is a NORMAL item.
>
> function lists_menu() {
>   $items = array();
>   $items['admin/lists'] = array(
>     'title'          => t('Mailing lists'),
>     'page callback'  => 'drupal_get_form',
>     'page arguments' => array('lists_subscribe'),
>     'access'         => user_access('access content'),
>     'type'           => MENU_NORMAL_ITEM,
>     'file'           => 'lists.module',
>   );
>   return $items;
> }
>
> This, which is what I want, does not show the lists path anywhere, not under menu
> as disabled, nothing (I marked the changed lines with an *).
>
> function lists_menu() {
>   $items = array();
> *  $items['lists'] = array(
>     'title'          => t('Mailing lists'),
>     'page callback'  => 'drupal_get_form',
>     'page arguments' => array('lists_subscribe'),
>     'access'         => user_access('access content'),
> *    'type'           => MENU_SUGGESTED_ITEM,
>     'file'           => ' lists.module',
>   );
>   return $items;
> }
>
> The latter is the one needed so that the path can be enabled or disabled in the
> menus as needed. This is the way it works on D5.
>
> What is amiss here?
> --
> Khalid M. Baheyeldin
> 2bits.com, Inc.
> http://2bits.com
> Drupal optimization, development, customization and consulting.
> --
> [ Drupal development list | http://lists.drupal.org/ ]
>


More information about the development mailing list