[Решено] Drupal 7 как разместить пункт на свой модуль в меню админки?

Главные вкладки

Аватар пользователя Lavio Lavio 31 октября 2012 в 14:30

Установлен модуль Administration menu, версия ядра Drupal'а 7.16.

Создаю свой модуль он отображается во вкладке админки "модули" включаю его, сохраняю настройки, добавляю права чтоб его мог использовать админ, очищаю кэш, но он не появляется в меню админки.

Если создавать в ручную пнкт в management-меню, то приходится указывать абра-кадабру в ссылке, что-то вроде #overlay=%3Fq%3D/admin/имя_модуля. Тогда все замечательно работает, однако, на мой взгляд это полный бред и неправильно.
На сколько я понял, #overlay - это то, что создает эффект отображения страниц админ-меню над содержимым сайта и с серым прозрачным фоном по краям. Исходя из этого возникла идея что мой модуль не получил прав на ее использование, но я не нашел где можно их указать.

Еще у меня есть предположение и догадки что нужно как-то указать Drupal'у что мой модуль является частью функционала админки чтоб он сам генерил и приставлял эту абра-кадабру к ссылке и соответственно показывал сам пункт меню в админке.

Код имя_модуля.module я уже по разному писал и по примеру из commerc'a

<?phpfunction ex_mod_menu() {
 $items = array();
 // Top level "Store" container.
 $items['admin/ex_mod'] = array(
   'title' => 'Eampel module',
   'description' => 'страница ex_mod.',
   'page callback' => 'system_admin_menu_block_page',
   'access arguments' => array('access administration pages'),
   'file path' => drupal_get_path('module', 'system'),
   'file' => 'system.admin.inc',
 );
}?>

и свой варинант

<?php$items['admin/ex_mod'] = array(
  'title' => 'Title',
   'description' => 'Description.',
   'position' => 'left',
   'page callback' => 'ex_mod_myform',
  'access callback' => TRUE,
'expanded' => TRUE,
 );
 return $items;
}?>

Где ex_mod_myform функция вывода моей формы.

Результат всегда один и тот же в админ-меню нет нужного пункта (он должен отображаться на основном уровне с "структура", "содержимое", "модули" и т.д.). Если набирать в адресной строке ссылку
имя_сайта/#overlay=%3Fq%3D/admin/имя_модуля то открывается нужная страничка с формой.
В чем проблема и как ее решить?

Комментарии

Аватар пользователя antotor antotor 31 октября 2012 в 14:52

Определись в каком разделе админки ты хочешь разместить свой модуль. Например в разделе конфигурация -> система. Тогда твой код будет выглядеть так:

function you_module_menu()
{
        $items = array();
       
        $items['admin/config/system/you_module'] = array(
        'title' => 'Title',
        'description' => "Desc.",
        'page callback' => 'ex_mod_myform',
        'page arguments' => array('you_module_admin'),
        'access arguments' => array('admin_acess'), //Тут нужно еще объявить допустимые права для модуля отдельно и указать их.
        'file' => 'you_module.inc',
  );
       
        return $items;
}
Аватар пользователя Lavio Lavio 31 октября 2012 в 15:04

antotor wrote:
Определись в каком разделе админки ты хочешь разместить свой модуль.

У меня должен быть свой раздел, например как у модуля комерц, на планке админской менюшки.
"Содержимое", "структура", "мой пункт меню", "магазин", "оформление", "пользователи", "модули", "конфигурация", "отчет", "справка".

Аватар пользователя Lavio Lavio 31 октября 2012 в 15:19

antotor wrote:
Тогда будет

$items['admin/you_module'] = array(


У меня вроде также написано, разве нет?...

<?php$items['admin/ex_mod'] = array(
  'title' => 'Title',
   'description' => 'Description.',
   'position' => 'left',
   'page callback' => 'ex_mod_myform',
  'access callback' => TRUE,
'expanded' => TRUE,
 );
 return $items;
}?>

Возможно нужно еще что-то где-то включить/"поставить галочку" чтоб система это приняла как часть функционала?

Аватар пользователя Lavio Lavio 31 октября 2012 в 15:47

antotor wrote:
Нет, ничего нигде не нужно включать. Только что на чистом 7м друпале последнем вписал свой код и получил искомую ссылку http://screencast.com/t/s1wbtqSXfyb[/quote]
Я тоже сейчас на "чистом" друпале проверил, все работает... Странно... Вроде системные файлы не трогал, ставил модули только из drupal.org.
Обновление с 7.15 на 7.16 прошло без ошибок. Из-за чего может быть такой эффект? И как его профикстить без сноса системы и установки по новой?

Аватар пользователя Lavio Lavio 31 октября 2012 в 16:08

antotor wrote:
кэширование включено?

Если про "конфигурация"->"разработка"->"Производительность"->"пара галочек" то они сняты, минимальное/максимальное время жизни кэша не установлено. На "чистом" друпале аналогично.