2013-02-26 58 views
0

我有一个模块,它添加了一个链接到主菜单。当我点击该链接时,请求的页面被加载(一个.js和.html文件)。如何在drupal中创建子菜单7

我的主菜单如下:

  • 我的链接

我的代码如下所示:

<?php 

/**                                   
* Implements hook_menu()                              
*/ 
function kl_menu(){ 
    $items = array(); 

    $items['simple_link'] = array(
    'title'   => t('my link'), 
    'page callback' => 'build_page', 
    'access arguments' => array('access content'), 
    'menu_name' => 'main-menu', 
    'type' => MENU_NORMAL_ITEM, 
); 

/*                                    
* build_page                             
*/ 
function build_page() { 
    drupal_add_js(drupal_get_path('module', 'kl') . '/mypage.js', 'file'); 
    return (file_get_contents(drupal_get_path('module', 'kl').'/mypage.html')); 
} 

现在我想添加一个子菜单,而不是一个简单的纯的链接,使我的主菜单看起来像这样:

  • 我的子菜单
    • 我sublink1
    • 我sublink2

我想,当我点击“我的子菜单”,然后这个子菜单扩展显示更多的链接。然后当我重新点击我的子菜单时,我希望它崩溃。

我非常新的Drupal的PHP等

我怎样才能acheive说。我正在使用花环主题。

感谢

巴巴

+0

嘿巴巴检查了这一点:http://api.drupal.org/comment/33303#comment-33303 – 2013-02-26 02:56:46

回答

0
/** 
* Implements hook_menu(). 
*/ 
function kl_menu() { 
    $items['simple_link'] = array(
    'title'   => t('my link'), 
    'page callback' => 'kl_build_page', 
    'access arguments' => array('access content'), 
    'menu_name' => 'main-menu', 
    'type' => MENU_NORMAL_ITEM, 
); 
    $items['simple_link/my_sublink_1'] = array(
    'title'   => t('my sub link 1'), 
    'page callback' => 'mymodule_sub_page_1', 
    'access arguments' => array('access content'), 
    'type' => MENU_NORMAL_ITEM, 
); 
    $items['simple_link/my_sublink_2'] = array(
    'title'   => t('my sub link 2'), 
    'page callback' => 'mymodule_sub_page_1', 
    'access arguments' => array('access content'), 
    'type' => MENU_NORMAL_ITEM, 
); 
    return $items; 
} 

/** 
* Implements hook_theme(). 
*/ 
function kl_theme() { 
    $template_path = drupal_get_path('module', 'kl') . '/templates'; 

    return array(
    // File would be <module path>/templates/kl-build-page.tpl.php 
    'kl_build_page' => array(
     'path' => $template_path, 
     'template' => 'kl-build-page') 
    ), 
    // File would be <module path>/templates/kl-sub-page-1.tpl.php 
    'sub_page_1' => array(
     'path' => $template_path, 
     'template' => 'kl-sub-page-1') 
    ), 
    // File would be <module path>/templates/kl-sub-page-2.tpl.php 
    'sub_page_2' => array(
     'path' => $template_path, 
     'template' => 'kl-sub-page-2') 
    ), 
); 
} 

/** 
* Callback for main build page. 
*/ 
function kl_build_page() { 
    drupal_add_js(drupal_get_path('module', 'kl') . '/mypage.js', 'file'); 
    return theme('kl_build_page'); 
} 

/** 
* Page callback for sub page 1 
*/ 
function kl_sub_page_1() { 
    return theme('kl_sub_page_1'); 
} 

/** 
* Page callback for sub page 2 
*/ 
function kl_sub_page_2() { 
    return theme('kl_sub_page_2'); 
} 
+0

谢谢您的回答。因此,使用MENU_LOCAL_TASK不会显示任何子项,也不会显示“我的简单链接”可扩展。改用MENU_NORMAL_ITEM即可。子项显示,但是当我点击子项时,我得到一个空白页。然后,我收到以下消息:警告:call_user_func_array()期望参数1在menu_execute_active_handler()(/ Applications/XAMPP/xamppfiles/htdocs/kl-local的第517行)中为有效回调,未找到函数“build_page”或函数名无效/includes/menu.inc)。 – Baba 2013-02-26 17:09:34

+0

我更新了我的答案,以说明您对菜单类型的反馈,并重新使用它来更加标准地使用命名约定和Drupal的模板系统。你需要刷新缓存来获取新的hook_theme()。该代码未经测试,但它应该让您了解菜单回调与回调函数的关系。 – Coder1 2013-02-26 18:15:06