Добавьте новый блок конфигураций в admin/config
Я пытаюсь добавить новый блок конфигураций в admin/config
(точно так же, как "Люди", "Медиа" и "Система").
Я попытался скопировать и изменить соответствующие строки из modules/user/user.module
, но мой блок не отображается, и прямой переход по ссылке admin/config/mysite
приводит к сообщению об отказе в доступе.
Подстраницы отображаются непосредственно под меню Administration > Configuration
в модуле Администрирования (но не на странице admin/config
.)
Есть идеи, как это исправить?
$items['admin/config/mysite'] = array(
'title' => 'My Site',
'description' => 'Configure My Site settings.',
'position' => 'left',
'weight' => -20,
'page callback' => 'system_admin_menu_block_page',
'access arguments' => array('access administration pages'),
'file' => 'system.admin.inc',
'file path' => drupal_get_path('module', 'system'),
);
$items['admin/config/mysite/page1'] = array(
'title' => 'Sub page 1',
'page callback' => 'drupal_get_form',
'page arguments' => array('mysite_admin_1'),
'access arguments' => array('access administration pages'),
);
$items['admin/config/mysite/page2'] = array(
'title' => 'Sub page 2',
'page callback' => 'drupal_get_form',
'page arguments' => array('mysite_admin_2'),
'access arguments' => array('access administration pages'),
);
4 answers
Я решил свою собственную проблему. Причина, по которой ссылки появились там, где они были, а не в моем новом блоке, заключается в том, что я переместил существующие элементы в новое местоположение, что означает, что они все еще находились в исходном местоположении на экране конфигурации меню. Перемещение их вручную в нужное место решило проблему.
Если мы не укажем свойство access callback
в hook_menu()
, мы получим уведомление, как показано ниже:
Notice: Undefined index: access in _menu_translate() (line 778 of includes/menu.inc).
Notice: Undefined index: access in menu_get_item() (line 464 of includes/menu.inc).
Notice: Undefined index: access in menu_execute_active_handler() (line 499 of includes/menu.inc).
Notice: Undefined index: access in menu_tree_page_data() (line 1167 of incldes/menu.inc).
Notice: Undefined index: access in menu_tree_page_data() (line 1167 of includes/menu.inc).
Notice: Undefined index: access in menu_local_tasks() (line 1845 of includes/menu.inc).
Notice: Undefined index: access in menu_tree_page_data() (line 1167 of includes/menu.inc).
Notice: Undefined index: access in menu_tree_page_data() (line 1167 of includes/menu.inc).
Notice: Undefined index: access in menu_tree_page_data() (line 1167 of includes/menu.inc).
Чтобы избежать этого, приведенный выше код следует немного отредактировать, добавив свойство access callback
$items['admin/config/mysite'] = array(
'title' => 'My Site',
'description' => 'Configure My Site settings.',
'position' => 'left',
'weight' => -20,
'page callback' => 'system_admin_menu_block_page',
'access callback' => 'user_is_admin'
'access arguments' => array('access administration pages'),
'file' => 'system.admin.inc',
'file path' => drupal_get_path('module', 'system'),
);
$items['admin/config/mysite/page1'] = array('title' => 'Sub page 1',
'page callback' => 'drupal_get_form',
'page arguments' => array('mysite_admin_1'),
'access callback' => 'user_is_admin'
'access arguments' => array('access administration pages'),
);
И уведомление удаляется. :)
Я исправил это, используя приведенный ниже код.
$items['admin/config/myblk'] = array(
'title' => 'Title of the block',
'description' => 'description',
'position' => 'left',
'weight' => -25,
'page callback' => 'system_admin_menu_block_page',
'access arguments' => array('access administration pages'),
);
$items['admin/config/myblk/myblk-setting'] = array(
'title' => 'Link to settings',
'description' => 'Description about link',
'page callback' => 'drupal_get_form',
'page arguments' => array('call_your_setting_form'),
'access arguments' => array('administer authentication'),
'weight' => 10,
);
Проще всего добавить ссылку на модуль на страницу конфигурации администратора с помощью управления меню. Ниже приведена ссылка для доступа к управлению меню.
Http://yoursite.com/admin/structure/menu/manage/management
Спасибо вам!!!