Добавьте новый блок конфигураций в 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'),
);
 3
Author: Daniel, 2011-09-06

4 answers

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

 2
Author: Daniel, 2011-09-13 09:29:00

Если мы не укажем свойство 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'),
);

И уведомление удаляется. :)

 0
Author: user5341, 2012-03-07 09:29:53

Я исправил это, используя приведенный ниже код.

$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,
);

enter image description here

 0
Author: Kalidasan, 2015-01-27 14:31:10

Проще всего добавить ссылку на модуль на страницу конфигурации администратора с помощью управления меню. Ниже приведена ссылка для доступа к управлению меню.

Http://yoursite.com/admin/structure/menu/manage/management

Спасибо вам!!!

 0
Author: Aryashree Pritikrishna, 2015-03-09 14:36:34