Come aggiungere una scheda attività locale alla vista nodo? [chiuso]


8

Sto provando ad aggiungere una scheda aggiuntiva alle schede 'view' e 'edit' del nodo.

Il mio modulo è abilitato correttamente e ho cancellato la cache, ma la mia nuova scheda non viene visualizzata. Cosa mi sto perdendo?

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();

  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'page callback' => 'add_performance_action',
    'access callback' => TRUE,
    'type' => MENU_LOCAL_TASK,
  );

  return $items;
}

/**
* Page callback.
*/
function add_performance_action() {
  return t('Hello');
}

Il percorso funziona? Se vai su '/ node / 1 / performance', ricevi "Hello" indietro?
Les Lim,

Buon punto. No, visualizza il nodo come al solito.
pushka,

4
Non c'è niente di sbagliato nel codice che hai postato, quindi passa attraverso i soliti controlli: osserva il nome del file del tuo modulo per errori di battitura, controlla le tabelle della cache per assicurarti che vengano cancellate, ecc.
Les Lim

1
Ehi grazie - rassicurante sapere che non era il codice. Alla fine, l'ho fatto funzionare disabilitando e riattivando il modulo. Forse perché la tabella del router è stata aggiornata all'abilitazione? Comunque ... funziona ora.
Pushka,

Risposte:



0

Il tuo codice sembra buono ma ricordati di cancellare le cache di Drupal su admin / config / development / performance dopo ogni modifica al tuo hook_menu sopra.

L'alternativa che viene in mente sarebbe quella di usare hook_menu_local_tasks_alter, perché la voce di menu che vogliamo usare potrebbe essere già esistente.

Puoi anche provare questo spero che ti possa aiutare:

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();
  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'access callback' => 'your_module_access_check',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
  );
  return $items;
}
function your_module_access_check($node) {
  if ($node->type == 'page') {
    return TRUE;
  }
  return FALSE;
}

Grazie

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.