Всем доброго времени.
Нашел в сети код модуля, который (по идее) должен сбрасывать кэш ноды при ее обновлении.
Только вот не работает он нифига. Посмотрите, пожалуйста, опытным глазом, может ошибка какая есть в коде?
<?php
/**
* Реализация hook_node_submit.
*/
function mymodule_node_submit($node, $form, &$form_state) {
if ($form_state['values']['clear_cache_for_this_page']===1) :
$url = url('node/'. $node->nid, array('absolute' => true));
cache_clear_all($url, 'cache_page');
drupal_set_message('Очищен кэш для страницы <em class="placeholder">'. $node->title. '</em>.');
endif;
}
/**
* Реализация hook_form_FORM_ID_alter.
*/
function mymodule_form_node_form_alter(&$form, &$form_state, $form_id) {
if (isset($form['#node_edit_form']) && $form['#node_edit_form'] === TRUE) {
$form['options']['clear_cache_for_this_page'] = array(
'#type' => 'checkbox',
'#title' => "Очистить кэш для этой ноды",
'#default_value' => 1,
'#access' => user_access('administer nodes') ? TRUE : FALSE,
);
}
}
?>
Комментарии
Код, в принципе, рабочий...
Что именно не сбрасывается?
По сценарию - чистится кеш страницы ('cache_page' - тот что выводит кешированные страницы анонимам), возможно Вам нужно чистить кеш полей или какой-либо кастомный сегмент в котором хранится кеш отображаемых элементов.
Вот тут хорошо расписано устройство кеша в Drupal.
Вообще ничего не происходит, запись в таблице не удаляется. Только месаж - "очищен кэш ноды такой-то..." И страница отдается опять из кэша.
Проверил специально на тестовом сайте - страница кешируется для анонимов ('cache_page'). По сохранению, из БД кеш трется.
Повторюсь: возможно Вам нужно очищать не кеш страницы, а другой.
Может используется дополнительное кеширвоание - Entitycache, Display cache...
Может в качестве хранения используется не БД - Memcached, Boost и т.п.
Действительно, попробовал на свежем друпале - все работает. Это в моей сборке, видимо, что то не так. Пересобрать нужно.
bumble, Спасибо!
Нашел где нашел. Оставлю ссылочку на блог автора:
http://www.sooource.net/drupal-ochistka-kesha-obnovlennoy-nody