удалить вкладку "тема" в блоках для определенных ролей


Я хотел бы скрыть/удалить вкладки тематических блоков для определенных ролей в drupal. Например, администратор может редактировать оба блока тем, но другие роли могут редактировать только блоки, доступные в их текущей теме.

Изображение: enter image description here

Как вы можете видеть на картинке, я хотел бы скрыть СЕМЬ от других ролей, которые не являются Администратором? Любые идеи.

Спасибо!

Author: Michael, 2016-02-17

2 answers

function HOOK_menu_alter(&$items) {
  global $user;
  if(in_array('administrator', $user->roles) == FALSE && in_array('admin/structure/block/list/seven', array_keys($items)) == TRUE) {
    // This allows the path to still be registered but not displayed
    $items['admin/structure/block/list/seven']['type'] = MENU_CALLBACK;
  }
}
 2
Author: Chad Payne, 2016-02-17 19:07:01

Ваш ответ привел меня к правильному решению.

Правильный ответ таков:

function remove_tab_for_non_admins_menu_alter(&$items) {
  if(isset($items['admin/structure/block/list/seven'])) {
    $items['admin/structure/block/list/seven']['access callback'] = 'remove_tab_for_non_admin_check_access';
  }
}

function remove_tab_for_non_admin_check_access() {
  global $user;
  return in_array('administrator', $user->roles);
}
 1
Author: Michael, 2016-02-18 21:12:18