Domanda

Ecco una struttura di menu di base con cui sto lavorando:

function events_menu()
{
    $items = array();

    $items['events'] = array(
        'title' => 'Current Events',
        'access callback' => true,
        'page callback' => 'page_event',
        'type' => MENU_CALLBACK,
    );
      $items['events/current'] = array(
          'access callback' => true,
          'type' => MENU_DEFAULT_LOCAL_TASK,
          'weight' => 1,
      );      
      $items['events/regions'] = array(
          'title' => 'Event By Region',
          'access callback' => true,
          'type' => MENU_LOCAL_TASK,
          'weight' => 2,
      );
      $items['events/range/%/to/%'] = array(
          'title' => 'Current Events by Range',
          'access callback' => true,
          'page callback' => 'page_event_range',
          'page arguments' => array(2, 4),
          'type' => MENU_LOCAL_TASK,
          /* Don't want this to be a tab.
             I want it to activate the default tab */
      );

    return $items;    
}

L'URL (e scheda predefinita) events mostra alcuni dati. Mi piacerebbe il events/range/%/to/% URL per filtrare i dati in base ai parametri URL passati.

Il hook_menu sopra funziona, ma io non voglio events/range/%/to/% sia il proprio scheda. Quando si utilizza l'URL filtrato, voglio la scheda predefinita, Attualità, di rimanere attivi - per dare l'illusione che si sta guardando la stessa pagina come events, solo filtrato. Can punto di URL multipli per la stessa scheda?

Credo che avrei potuto gestire i parametri URL manualmente con arg() nella pagina events richiamata, ma questo sembra hacky. Non c'è un modo per farlo utilizzando hook_menu?

Modifica (detto più chiaramente):
Normalmente ci sono due schede Eventi in corso e eventi per regione per quanto URL events e events/regions. Voglio un (solo callback) URL nascosta events/range/%/to/%. Ma quando si visita, voglio le due linguette di rimanere eventi visibili e corrente attiva -. Come se avessimo mai lasciato la pagina

È stato utile?

Soluzione

Non credo che sia possibile realizzare ciò che si vuole soltanto con menù gancio. Che cosa si potrebbe fare uso menu_set_active_trail per rendere Drupal far sembrare che gli utenti sta guardando la pagina /events.

Il metodo di cui sopra potrebbe funzionare solo per Drupal 7

Per Drupal 6 si potrebbe alterare $_GET['q']. Questo può, tuttavia contrapposti alcuni moduli come rovescio o globalredirect. Questa non è una bella soluzione, ma funziona. Il posto migliore per fare questo sarebbe in un modulo personalizzato utilizzando hook_init.

Altri suggerimenti

Usa MENU_CALLBACK invece di MENU_LOCAL_TASK, e la scheda spariranno. Quindi impostare la voce di menu corrente 'eventi' in questo modo (potrebbe funzionare soltanto nel hook_init, ma si può provare nella pagina richiamata troppo:

$item = menu_get_item();
$item['href'] = 'events';
menu_set_item(NULL, $item);

Hai provato 'contesto' Module. È possibile impostare modello percorso che si desidera per il menu attivo. Dai un'occhiata a questo rapido video demo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top