Нужно чтобы в панели админки был начальный пункт назовем его "мой модуль" в нем было еще 2 подпункта "Подпункт 1" и "Подпункт 2". Так вот при нажатии на пункт "мой модуль" нужно чтоб выводилась страничка подобная "Структура"->"Меню" с двумя вкладками "Подпункт 1" и "Подпункт 2", по умолчанию должна быть открыта первая.
Пробовал делать так:
<?php
function ex_mod_menu() {
$items = array();
$items['admin/ex_mod/ul'] = array(
'title' => 'Подпункт 1',
'description' => 'Описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_pp1'),
'access arguments' => array('access administration pages'),
'type' => MENU_DEFAULT_LOCAL_TASK
);
$items['admin/ex_mod/del'] = array(
'title' => 'Подпункт 2',
'description' => 'Описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_pp2'),
'access arguments' => array('access administration pages'),
'type' => MENU_LOCAL_TASK
);
return $items;
}
?>
Появляется "Подпункт 2" в основном меню админки, там где должен быть "мой модуль". Однако, вверху справа появляются 4 вкладки
Задачи (перечислены все начальные пункты админского меню "содержимое", "структура"..."отчет", "справка",
индекс (общая панель настроек всех модулей,
Подпункт 1 тоже самое что и в "Задачи",
Подпункт 2 содержимое то какое должно быть.
До этого был просто один пункт и все нормально работало.
<?php
function ex_mod_menu() {
$items = array();
$items['admin/ex_mod'] = array(
'title' => 'Мой модуль',
'description' => 'описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod'),
'access arguments' => array('access administration pages'),
);
return $items;
}?>
Я понимаю, что для того чтобы ссылка "мой модуль" была в основном меню ее нужно прописать в коде, но как это сделать чтоб она была одновременно и пунктом в меню админки, и вкладкой, также была вторая вкладка?
Комментарии
3 пункта меню у Вас должно быть, вот эти первых два, плюс тот что в конце, тот что в конце должен быть с 'type' => MENU_CALLBACK,
Благодарю за ответ! Все работает) Только небольшое дополнение: нужно заменить MENU_DEFAULT_LOCAL_TASK на MENU_LOCAL_TASK иначе будет не тот пункт первым или вообще на обоих пунктах будет одна форма.
Остался маленький вопросик:
Как сделать чтобы два подпункта были еще и в выпадающем списке админ меню? То есть наводишь мышкой выпадаю 2 пункта.
Благодарю за ответ! Все работает, но немного не так как надо)
Конечный код:
<?php
function ex_mod_menu() {
$items = array();
$items['admin/ex_mod'] = array(
'title' => 'Мой модуль',
'description' => 'описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_ul'),
'access arguments' => array('access administration pages'),
'type' => MENU_CALLBACK
);
$items['admin/ex_mod/ul'] = array(
'title' => 'Подпункт 1',
'description' => 'описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_ul'),
'access arguments' => array('access administration pages'),
'type' => MENU_LOCAL_TASK
);
$items['admin/ex_mod/smf'] = array(
'title' => 'Подпункт 2',
'description' => 'описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_smf'),
'access arguments' => array('access administration pages'),
'type' => MENU_LOCAL_TASK
);
return $items;
}?>
Имеем:
В меню админки отображается и "Подпункт 1" и "Подпункт 2", самого пункта "Мой модуль" нет.
Как сделать чтоб в админке отображался на основном уровне только "Мой модуль", а два подпункта были в его выпадающем списке. То есть наводишь мышкой на "Мой модуль" выпадают 2 пункта и при этом они оставались вкладками.
MENU_CALLBACK означает, что данный адрес по умолчанию не имеет прямых ссылок в меню, попробуйте сменить на MENU_NORMAL_ITEM, правда в этом случае у вас admin/ex_mod/ul будет дублем admin/ex_mod, либо измените вывод в admin/ex_mod, либо откажитесь от этой идеи.
Мдаа... после замены MENU_CALLBACK на MENU_NORMAL_ITEM есть все три пункта в меню админки, но на одном уровне.
Хорошо как можно реализовать 2 подхода по отдельности?
1) Пункт "Мой модуль" в меню адмики. В нем выпадающим способом появляются 2 подменю, которые ведут на свои странички с формами без вкладок.
2) Один Пункт меню "мой модуль", который открывает 1 страничку с 2 вкладками "мой модуль" и "подпункт 2". При этом в меню админки есть только 1 пункт "мой модуль".
Вообще по уму делается так:
$items = array();
$items['admin/ex_mod'] = array(
'title' => 'Мой модуль',
'description' => 'описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_ul'),
'access arguments' => array('access administration pages'),
'type' => MENU_CALLBACK
);
$items['admin/ex_mod/ul'] = array(
'title' => 'Подпункт 1',//Название самого таба
'type' => MENU_DEFAULT_LOCAL_TASK,//Дефолтный таб
'weight' => -10,//Делаем его 1м
);
$items['admin/ex_mod/smf'] = array(
'title' => 'Подпункт 2',
'description' => 'описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_smf'),
'access arguments' => array('access administration pages'),
'type' => MENU_LOCAL_TASK
);
return $items;
но, честно говоря хз как он себя поведет в случае с admin menu
Я сделал так:
<?php
function ex_mod_menu() {
$items = array();
$items['admin/ex_mod'] = array(
'title' => 'Мой модуль',
'description' => 'описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_ul'),
'access arguments' => array('access administration pages'),
'type' => MENU_CALLBACK
);
$items['admin/ex_mod/ul'] = array(
'title' => 'Подпункт 1',
'description' => 'описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_ul'),
'access arguments' => array('access administration pages'),
'type' => MENU_LOCAL_TASK
);
$items['admin/ex_mod/smf'] = array(
'title' => 'Подпункт 2',
'description' => 'описание',
'position' => 'left',
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_smf'),
'access arguments' => array('access administration pages'),
'type' => MENU_LOCAL_TASK
);
return $items;
}?>
Если писать MENU_DEFAULT_LOCAL_TASK вместо MENU_LOCAL_TASK то подпункт скрывается в выпадающем меню. Если делать оба пункта MENU_LOCAL_TASK то при переходе по пункту 'Мой модуль' открывается 'Подпункт 1' и он не подсвечен белым вверху справа во вкладках. Да, кстати, разницу между параметрами MENU_CALLBACK и MENU_NORMAL_ITEM для пункта 'Мой модуль' не заметил ведет себя абсолютно одинаково в обоих случаях. И если исключать строчки
<?php
'page callback' => 'drupal_get_form',
'page arguments' => array('ex_mod_ul'),
'access arguments' => array('access administration pages'),?>
из первого подпункта то разницы, с вариантом оставить их, также не будет при параметре MENU_DEFAULT_LOCAL_TASK. При параметре MENU_LOCAL_TASK и исключенных строчках исчезают вкладки.