Скрыть меню других доменов из формы редактирования узла на сайте Drupal, используя доступ к домену - PullRequest
1 голос
/ 14 июня 2010

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

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

Ответы [ 3 ]

1 голос
/ 14 ноября 2012

Вот обновленный код для 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;
  }
}
1 голос
/ 14 июня 2010

В соответствии с readme для модуля вам необходимо установить некоторые определенные разрешения в управлении пользователями:

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

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

0 голосов
/ 14 июня 2010

В конце концов нашел способ исправить это для конкретного проекта, над которым я работал: в 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;
}

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

Спасибо Фабиану , который указал мне в правильном направлении ранее .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...