menu Nascondi gli altri domini dal nodo modulo di modifica su un sito Drupal con accesso al dominio

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

Domanda

Sono in procinto di fare alcuni miglioramenti ad un sito Drupal live che sta usando il modulo di accesso di dominio per eseguire una serie di micrositi. Sto cercando di trovare un modo di limitare i menu un utente può inviare contenuti dallo schermo del nodo di modifica. Un utente su uno dei domini dovrebbe essere solo in grado di inviare contenuti ai menu associati a quel dominio.

C'è un modo semplice per ottenere questo risultato? Sto indovinando ci sono alcuni ganci potrei usare, ma finora sono stato in grado di identificarli. Preferirei non dover installare ulteriori moduli per raggiungere questo obiettivo e di essere in grado di aggiungere del codice per il sito corrente per alterare le forme. Il sito è alle prese con il gran numero di moduli che abbiamo avuto da installare su di esso già.

È stato utile?

Soluzione 3

Alla fine ha trovato il modo di fissare questo per il progetto particolare ho lavorato: in module_form_alter ho aggiunto il seguente: -

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

Questo limita le opzioni del menu a poco menù link primario del dominio corrente, che è proprio quello che volevamo.

Grazie a Fabian che mi hanno indicato in la giusta direzione in precedenza .

Altri suggerimenti

Secondo il readme per il modulo, è necessario impostare alcune autorizzazioni specifiche nella gestione degli utenti:

  

Per attivare questa funzione, è necessario concedere i 'nodi dominio Modifica' e   (Opzionalmente) il permesso 'eliminare i nodi del dominio' per alcuni ruoli. quindi assegnare   i singoli utenti account di domini specifici per assegnare loro come Editors dominio.

Dalla mia esperienza molte lune fa con il modulo, è possibile controllare l'oggetto $ utente globale e capire quali domini l'utente dovrebbe avere accesso. È quindi possibile utilizzare un modulo alter per rimuovere tutte le opzioni dalla casella di selezione che non si desidera vederli. Come sempre con Drupal, però, è meglio lasciare che qualcun altro scrivere il codice - quindi se il modulo di dominio fornisce questa funzionalità, usa

Ecco il codice aggiornato per 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;
  }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top