2013-02-26 2 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 и т.д.

Как я могу достигнуть того. Я использую тему гирлянды.

Благодаря

Бабы

+0

Эй Баба проверить это: http://api.drupal.org/comment/33303#comment-33303 –

ответ

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. Подпункты отображаются, но когда я нажимаю на подпункты, я получаю пустую страницу. Затем я получаю сообщение: Warning: call_user_func_array() ожидает, что параметр 1 будет действительным обратным вызовом, функция «build_page» не найдена или неверное имя функции в menu_execute_active_handler() (строка 517 из/Applications/XAMPP/xamppfiles/htdocs/kl-local /includes/menu.inc). – Baba

+0

Я обновил свой ответ, чтобы узнать ваши отзывы о типе меню, и я переработал его, чтобы использовать более стандартное использование соглашений об именах и системы шаблонов Drupal. Вам нужно будет сбросить кеш, чтобы получить новый hook_theme(), чтобы забрать. Код не проверен, но он должен дать вам представление о том, как обратные вызовы меню относятся к функциям обратного вызова. – Coder1

 Смежные вопросы

  • Нет связанных вопросов^_^