Я написал простой плагин Magento, который просто перечисляет все подкатегории, которые включены из данного родительского идентификатора.
Пользователь просто выбирает идентификатор родительской категории из администратора, используя вкладку плагина, которую я создал.
Чтобы ускорить работу, я добавил кэширование блоков в плагин, используя следующий код
$this->addData(array( 'cache_lifetime' => 86400, 'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG) ));
До сих пор это хорошо работает, как если бы подкатегория была включена / отключена, кеш недействителен и заменяется. Однако, если я изменяю идентификатор родительской категории в администраторах, изменения не видны до тех пор, пока весь кеш блока не будет обновлен с помощью system-> cache management.
То, что я хотел бы сделать, – это иметь способ, когда, когда пользователь нажимает на сохранение в админе, кеш очищается только для этого блока, а не обновляет все.
Как я могу это сделать? Я думаю, какой-то наблюдатель событий в событии сохранения в adminhtml? однако я бы не знал, как это сделать.
Меня интересует то, что, возможно, есть у других людей.
Большое спасибо
Ян Кэссиди
Вы можете использовать Event Observer для очистки кеша. Вы можете следовать этому руководству, чтобы настроить своих наблюдателей, а затем наблюдать за событием catalog_category_save_after
.
Чтобы очистить кеш, используйте Mage::app()->getCacheInstance()->cleanType(Mage_Catalog_Model_Category::CACHE_TAG);
в вашей модели наблюдателей.
PS: возможно, вам нужно настроить свои <events>
на <admin>
или <adminhtml>
вместо <globals>
.
вы можете использовать генератор наблюдателя, когда нажимаете кнопку «Обновить» в управлении кешем. после этого вы можете очистить кеш с помощью тега кэша или идентификатора кэша. Это решение для очистки кэша с помощью идентификатора кеша. вы можете увидеть, как обновить кеш в пользовательском типе кеша