Masquer les autres menus de domaines de formulaire de modification de noeud sur un site Drupal en utilisant l'accès au domaine

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

Question

Je suis en train de faire quelques améliorations à un site Drupal en direct qui est à l'aide du module d'accès de domaine pour exécuter un certain nombre de microsites. J'essaie de trouver un moyen de restreindre les menus d'un utilisateur peut afficher du contenu à partir de l'écran d'édition du nœud. Un utilisateur sur l'un des domaines ne devrait être en mesure d'afficher le contenu de menus associés à ce domaine.

Y at-il un moyen simple, d'y parvenir? Je devine que il y a quelques crochets que je pourrais utiliser, mais jusqu'à présent, je suis incapable de les identifier. Je préférerais ne pas avoir à installer d'autres modules pour y parvenir et pour être en mesure d'ajouter un code au site actuel de modifier les formes. Le site est aux prises avec le grand nombre de modules que nous avons dû installer sur déjà.

Était-ce utile?

La solution 3

a finalement trouvé un moyen de fixer ce pour le projet particulier, je travaille sur: dans module_form_alter J'ai ajouté ce qui suit: -

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;
}

Cela limite les options de menu à seulement menu des liens primaire de domaine actuel qui est exactement ce que nous voulions.

Merci à Fabian qui m'a fait remarquer dans la bonne direction antérieure .

Autres conseils

Selon le README pour le module, vous devez définir des autorisations spécifiques dans la gestion des utilisateurs:

  

Pour activer cette fonction, vous devez accorder les « modifier nœuds de domaine » et   (Le cas échéant) l'autorisation « Supprimer nœuds de domaine » à certains rôles. puis assignez   utilisateurs individuels comptes à des domaines spécifiques pour les attribuer en tant que rédacteurs de domaine.

D'après mon expérience beaucoup il y a des lunes avec le module, vous pouvez vérifier l'objet global de l'utilisateur $ et de déterminer quels domaines l'utilisateur doit avoir accès. Vous pouvez ensuite utiliser un formulaire alter pour supprimer toutes les options de la boîte de sélection que vous ne voulez pas les voir. Comme toujours avec Drupal cependant, il est préférable de laisser quelqu'un d'autre écrire le code - si le module de domaine offre cette fonctionnalité, utilisez-le

Voici un code mis à jour pour 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;
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top