Скрыть меню других доменов из формы редактирования узла на месте Drupal с использованием домена домена
-
27-09-2019 - |
Вопрос
Я в процессе внесения некоторых улучшений на живой на месте 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;
}
}