Скрыть меню других доменов из формы редактирования узла на месте Drupal с использованием домена домена

StackOverflow https://stackoverflow.com/questions/3036293

Вопрос

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

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

Это было полезно?

Решение 3

В конце концов нашел способ исправления этого для конкретного проекта, над которым я работал: в Module_Form_Alter Я добавил следующее: -

global $_domain;
if (isset($_domain['domain_id'])) { // only display domain's primary links
  $menus[domain_conf_variable_get($_domain['domain_id']
    ,'menu_primary_links_source')] = $_domain['sitename'].' Primary links';
}
if ( isset($menus) ) {
  $options = menu_parent_options($menus, $form['menu']['#item']);
  $form['menu']['parent']['#options'] = $options;
}

Это ограничивает параметры меню для всего меню основных ссылок текущего домена, который просто то, что мы хотели.

Благодаря Фабиан Кто указал меня в правильное направление ранее.

Другие советы

Согласно Прочти меня Для модуля необходимо установить некоторые конкретные разрешения в управлении пользователями:

Чтобы включить эту функцию, вы должны предоставить «редактировать узлы домена» и (необязательно) разрешения «Удалить доменные узлы домена на некоторые роли». Затем назначите отдельных учетных записей пользователей конкретным доменам, чтобы назначить их в качестве редакторов домена.

Из моего опыта многие луны назад с модулем вы можете проверить глобальный объект $ User и выяснить, к каким доменам пользователь должен иметь доступ. Затем вы можете использовать форму ALTER, чтобы удалить любые параметры из окна выбора, который вы не хотите, чтобы они их видели. Как всегда с Drupal, хотя, лучше позволить кому-то еще написать код - поэтому, если модуль домена предоставляет эту функциональность, используйте его!

Вот некоторые обновленные код для Drupal 7:

/**
 * Implements hook_form_FORM_ID_alter().
 */
function MYMODULE_form_page_node_form_alter(&$form, &$form_state) {
  global $_domain;
  if (isset($_domain['domain_id'])) { // only display domain's primary links
    $menus[domain_conf_variable_get($_domain['domain_id'], 'menu_main_links_source')] = $_domain['sitename'].' Main menu';
  }
  if (isset($menus)) {
    $options = menu_parent_options($menus, $form['#node']->type);
    $form['menu']['link']['parent']['#options'] = $options;
  }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top