14 菜单项中的通配符

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

 

到目前为止,我们在菜单项中所用的都是普通的Drupal路径名字,比如menu_abc 、my、my/orders。但是Drupal还经常使用这样的路径,比如user/1或node/1/edit,在这些路径中,有一部分是动态的。现在,让我们来看看动态路径是如何工作的。

 

    我们为此单独创建一个模块menu_wildcard,首先创建menu_wildcard.info, menu_wildcard.module, menu_wildcard.pages.inc文件。然后向menu_wildcard.info中添加以下内容:

 

name = 菜单通配符

description = 用来学习菜单通配符的实例模块

core = 7.x

 

    接着向menu_wildcard.module文件添加以下代码:

<?php

 

/**

 * @file

 * 演示Drupal中菜单通配符的用法,

 */

 

 

/**

 * 实现 hook_menu().

 */

function menu_wildcard_menu() {

 

  $items['wildcard/%'] = array(

    'title' => '简单的通配符',

    'description' => '一个简单的包含通配符的菜单项.',

    'page callback' => 'menu_wildcard_callback_page',

'page arguments' => array(1),

'file' => 'menu_wildcard.pages.inc',

    'access callback' => TRUE,

  );


  return $items;

}

 

    最后向menu_wildcard.pages.inc文件中添加对应的回调函数:

<?php

 

/**

 * @file

 * menu_wildcard的各种回调函数,

 */

 

 

/**

 * 菜单项wildcard/%的回调函数.

 */

function menu_wildcard_callback_page($arg1 = '', $arg2 = '', $arg3 = '', $arg4 = ''){

  $render_array = array();

  $render_array['#markup'] = t('菜单通配符示例页面内容');

  $render_array['#markup'] .=  '<div>'.t('参数1:@arg1', array('@arg1' => $arg1)).'</div>';

  $render_array['#markup'] .=  '<div>'.t('参数2:@arg2', array('@arg2' => $arg2)).'</div>';

  $render_array['#markup'] .=  '<div>'.t('参数3:@arg3', array('@arg3' => $arg3)).'</div>';

  $render_array['#markup'] .=  '<div>'.t('参数4:@arg4', array('@arg4' => $arg4)).'</div>';

  return $render_array;

}

 


Drupal版本: