Como adicionar uma guia de tarefas local à visualização do nó? [fechadas]

8

Estou tentando adicionar uma guia extra às guias 'view' e 'edit' do nó.

Meu módulo está ativado corretamente e limpei o cache, mas minha nova guia não aparece. o que estou 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');
}
pushka
fonte
A rota funciona? Se você for para '/ node / 1 / performance', receberá "Hello" de volta?
Les Lim
Bom ponto. Não, apenas exibe o nó como de costume.
pushka
4
Não há nada de errado com o código que você postou, então faça as verificações usuais: observe o nome do arquivo do seu módulo para erros de digitação, observe as tabelas de cache para garantir que estejam limpando etc.
Les Lim
11
Ei, obrigado - reconfortante saber que não era o código. No final, consegui desabilitar e reativar o módulo. Talvez porque a tabela do roteador esteja atualizada ao ativar? Enfim ... funciona agora.
pushka

Respostas:

0

Quando você altera o hook_menu, não precisa "limpar o cache", mas " reconstruir menus ".

Petrroll
fonte
reconstruir menus é suficiente, mas limpar o cache inclui reconstruir menus.
sanzante
0

Seu código parece bom, mas lembre-se de limpar os caches do Drupal em admin / config / development / performance após cada alteração no seu hook_menu acima.

A alternativa que vem à mente seria usar hook_menu_local_tasks_alter, porque o item de menu que queremos usar já pode existir.

Você também pode tentar isso, espero que ajude você:

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

obrigado

Kumar Rahul Sankrit
fonte