Wie füge ich der Knotenansicht eine lokale Aufgabenregisterkarte hinzu? [geschlossen]

8

Ich versuche, den Registerkarten "Ansicht" und "Bearbeiten" des Knotens eine zusätzliche Registerkarte hinzuzufügen.

Mein Modul ist einwandfrei aktiviert und ich habe den Cache geleert, aber meine neue Registerkarte wird nicht angezeigt. Was vermisse ich?

/**
* 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');
}
Puschka
quelle
Funktioniert die Route? Wenn Sie zu '/ node / 1 / performance' gehen, erhalten Sie "Hallo" zurück?
Les Lim
Guter Punkt. Nein, es wird nur der Knoten wie gewohnt angezeigt.
Puschka
4
An dem von Ihnen geposteten Code ist nichts auszusetzen. Führen Sie daher die üblichen Überprüfungen durch: Überprüfen Sie den Dateinamen Ihrer Moduldatei auf Tippfehler, überprüfen Sie tatsächlich Ihre Cache-Tabellen, um sicherzustellen, dass sie gelöscht werden usw.
Les Lim
1
Hey, danke - beruhigend zu wissen, dass es nicht der Code war. Am Ende habe ich es zum Laufen gebracht, indem ich das Modul deaktiviert und wieder aktiviert habe. Vielleicht, weil die Routertabelle beim Aktivieren aktualisiert wird? Wie auch immer ... es funktioniert jetzt.
Puschka

Antworten:

0

Wenn Sie das hook_menu ändern, müssen Sie nicht den Cache löschen, sondern die Menüs neu erstellen .

Petrroll
quelle
Das Wiederherstellen von Menüs reicht aus, aber der leere Cache enthält das Wiederherstellen von Menüs.
Sanzante
0

Ihr Code sieht gut aus, aber denken Sie daran, Ihre Drupal-Caches nach jeder Änderung an Ihrem Hook_menu oben unter admin / config / development / performance zu löschen.

Die Alternative, die mir in den Sinn kommt, wäre die Verwendung von hook_menu_local_tasks_alter, da der Menüpunkt, den wir verwenden möchten, möglicherweise bereits vorhanden ist.

Sie können dies auch versuchen, ich hoffe, es wird Ihnen helfen:

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

Vielen Dank

Kumar Rahul Sankrit
quelle