Я нахожусь в процессе создания некоторых улучшений живого сайта Drupal, это использует Доменный модуль Доступа для выполнения многих микросайтов. Я пытаюсь найти способ ограничить меню, на которые пользователь может отправить содержание с экрана редактирования узла. Пользователь на одном из доменов должен только смочь отправить содержание на меню, связанные с тем доменом.
Существует ли простой способ достигнуть этого? Я предполагаю, что существуют некоторые рычаги, которые я мог использовать, но до сих пор я не мог определить их. Я предпочел бы не должным быть устанавливать дальнейшие модули, чтобы достигнуть этого и смочь добавить некоторый код к текущему сайту для изменения форм. Сайт борется с большим количеством модулей, которые мы уже должны были установить на нем.
В конце концов нашел способ исправить это для конкретного проекта, над которым я работал: в 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;
}
Это ограничивает параметры меню только основным меню ссылок текущего домена, что и есть мы хотели.
Спасибо Фабиану , который указал мне правильное направление ранее .
Согласно readme для модуля, вам необходимо установить некоторые специальные разрешения в управлении пользователями:
Чтобы включить эту функцию, вы должны предоставить права 'редактировать узлы домена' и (опционально) разрешение 'редактировать узлы домена' и 'удалять узлы домена' некоторым ролям. Затем назначить отдельные учетные записи пользователей определенным доменам, чтобы назначить их редакторами домена.
Из моего опыта работы с модулем много лун назад, вы можете проверить глобальный объект $user и выяснить, к каким доменам пользователь должен иметь доступ. Затем вы можете использовать изменение формы, чтобы удалить все опции из поля выбора, которые вы не хотите, чтобы они видели. Как всегда в Drupal, лучше позволить кому-то другому писать код - так что если модуль Domain предоставляет такую функциональность, используйте его!