it-swarm.com.de

Wie lösche ich den Cache nach dem Aktualisieren / Löschen / Hinzufügen neuer Inhalte mithilfe von Hooks?

Wir haben ein benutzerdefiniertes Servicemodul und eine Site in Drupal 7), und ich habe die Aufgabe, den Cache zu löschen, nachdem der Editor neue Inhalte hinzugefügt oder die vorhandenen aktualisiert hat.

Ich habe über ein Modul namens Cache Actions gelesen, aber wie gesagt, ich muss die Funktion auf meinem benutzerdefinierten Modul erstellen.

Außerdem habe ich angefangen, über Drupal Hooks) zu lesen, habe aber noch keine Ahnung, wie diese Aufgabe implementiert werden soll. Irgendwelche Vorschläge? Danke.

11
Erzei

Es hört sich so an, als hätten Sie bereits ein benutzerdefiniertes Modul, aber nur für den Fall, dass Sie das Modulentwicklerhandbuch nicht sehen.

Die Hooks, nach denen Sie suchen, sind hook_node_insert() und hook_node_update() , und die Funktion zum Löschen des Caches lautet entweder - cache_clear_all() oder drupal_flush_all_caches . Mit Ersterem können Sie bestimmte Cache-Bins (und sogar bestimmte Cache-Elemente) löschen, und mit Letzterem können Sie absolut alles löschen.

Zum Beispiel:

function MYMODULE_node_insert($node) {
  drupal_flush_all_caches();
}

oder um nur den statischen Seitencache zu löschen, nachdem ein Knoten aktualisiert wurde:

function MYMODULE_node_update($node) {
  $nodeurl = url('node/'. $node->nid, array('absolute' => TRUE));
  cache_clear_all($nodeurl, 'cache_page');
}
12
Clive

Sie können bestimmte Knotencaches nach dem Aktualisieren problemlos löschen. Ex. ::

function MYMODULE_node_update($node) {
  $nodeurl = url('node/'. $node->nid, array('absolute' => TRUE));
  cache_clear_all($nodeurl, 'cache_page');
}

Bitte beachten Sie, dass Sie array('absolute' => TRUE) angeben müssen.

1
Ajay Gadhavana