Drupal 7にカスタムサービスモジュールとサイトがあり、エディターが新しいコンテンツを追加した後、または既存のコンテンツを更新した後、キャッシュを削除するタスクを取得しました。
Cache Actions と呼ばれるモジュールについて読みましたが、言ったように、カスタムモジュールに関数を作成する必要があります。
また、私はDrupalフックについて読み始めましたが、それでもこのタスクを実装する方法の手掛かりがありません。何か提案がありますか?ありがとう。
すでにカスタムモジュールを取得しているようですが、念のため Module Developer's Guide が表示されていません。
あなたが探しているフックは hook_node_insert()
と hook_node_update()
で、キャッシュをクリアする関数は- cache_clear_all()
または drupal_flush_all_caches
。前者は特定の キャッシュビン (および特定のキャッシュアイテムさえ)をクリアし、後者はすべてを完全にクリアします。
例えば:
function MYMODULE_node_insert($node) {
drupal_flush_all_caches();
}
または、ノードが更新された後に静的ページキャッシュのみをクリアするには:
function MYMODULE_node_update($node) {
$nodeurl = url('node/'. $node->nid, array('absolute' => TRUE));
cache_clear_all($nodeurl, 'cache_page');
}
特定のノードキャッシュを更新した後、それらを簡単にクリアできます。例:
_function MYMODULE_node_update($node) {
$nodeurl = url('node/'. $node->nid, array('absolute' => TRUE));
cache_clear_all($nodeurl, 'cache_page');
}
_
array('absolute' => TRUE)
を指定する必要があることに注意してください。