Jak dodać kartę zadania lokalnego do widoku węzła? [Zamknięte]

8

Próbuję dodać dodatkową kartę do kart węzłów „widok” i „edycja”.

Mój moduł jest włączony poprawnie i wyczyściłem pamięć podręczną, ale moja nowa karta nie jest wyświetlana. czego mi brakuje?

/**
* 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
źródło
Czy trasa działa? Jeśli przejdziesz do „/ node / 1 / performance”, czy wrócisz „Hello”?
Les Lim,
Słuszna uwaga. Nie, po prostu wyświetla węzeł jak zwykle.
pushka
4
Nie ma nic złego w opublikowanym kodzie, więc przeprowadź zwykłe kontrole: spójrz na nazwę pliku modułu w poszukiwaniu literówek, faktycznie spójrz na tabele pamięci podręcznej, aby się upewnić, że są one wyczyszczone itp.
Les Lim
1
Hej dzięki - uspokajające, że to nie był kod. Ostatecznie działałem, wyłączając i ponownie włączając moduł. Może dlatego, że tabela routerów jest aktualizowana po włączeniu? W każdym razie ... teraz działa.
pushka

Odpowiedzi:

0

Po zmianie menu hook_menu nie musisz „wyczyścić pamięci podręcznej”, ale „ odbudować menu ”.

Petrroll
źródło
wystarczy odbudować menu, ale wyczyść pamięć podręczną obejmuje menu odbudowy.
sanzante
0

Twój kod wygląda dobrze, ale pamiętaj, aby wyczyścić pamięć podręczną Drupal w admin / config / development / performance po każdej zmianie powyższego menu hook_menu.

Alternatywą, która przychodzi mi na myśl, byłoby użycie hook_menu_local_tasks_alter, ponieważ element menu, którego chcemy użyć, może już istnieć.

Możesz również spróbować tego, mam nadzieję, że to ci pomoże:

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

Dzięki

Kumar Rahul Sankrit
źródło