¿Cómo agregar una pestaña de tarea local a la vista de nodo? [cerrado]

8

Estoy tratando de agregar una pestaña adicional a las pestañas 'ver' y 'editar' del nodo.

Mi módulo está habilitado y he borrado el caché, pero mi nueva pestaña no aparece. ¿Qué me estoy perdiendo?

/**
* 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');
}
Pushka
fuente
¿Funciona la ruta? Si va a '/ node / 1 / performance', ¿recupera "Hola"?
Les Lim
Buen punto. No, solo muestra el nodo como de costumbre.
pushka
44
No hay nada de malo en el código que publicó, así que realice las comprobaciones habituales: mire el nombre de archivo del archivo del módulo en busca de errores tipográficos, en realidad mire las tablas de caché para asegurarse de que se están borrando, etc.
Les Lim
1
Hola, gracias. Me tranquilizó saber que no era el código. Al final, lo conseguí trabajando deshabilitando y volviendo a habilitar el módulo. ¿Quizás porque la tabla del enrutador se actualiza al habilitar? De todos modos ... funciona ahora.
pushka

Respuestas:

0

Cuando cambia el hook_menu no tiene que 'borrar el caché' sino ' reconstruir menús '.

Petrroll
fuente
reconstruir menús es suficiente, pero borrar caché incluye reconstruir menús.
sanzante
0

Su código se ve bien, pero recuerde borrar sus cachés de Drupal en admin / config / development / performance después de cada cambio en su hook_menu anterior.

La alternativa que viene a la mente sería usar hook_menu_local_tasks_alter, porque el elemento de menú que queremos usar puede que ya exista.

También puedes probar esto, espero que te ayude:

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

Gracias

Kumar Rahul Sankrit
fuente