Отключение кэширования корзины в плагине System Cache Joomla 2
Появилась вот такая вот задачка — убрать кэширование модуля корзины виртуалмарта в джумле при включенном плагине System Cache.
Решение было следующее, в файле cache.php (plugins\system\cache\cache.php) перед тем как будет выводиться закэшированная страница найти позицию в которой начинается и заканчивается блок вывода модуля корзины и исключить его из кэша.
Делаем хак для запрета кэширования модуля корзины в системном плагине Joomla Система-КэшОткрываем файл системного плагина кэша Joomla
1 | plugins\system\cache\cache.php |
Находим функцию onAfterInitialise и внутри перед строкой JResponse::setBody
1 2 3 | if ($data !== false) { // вставить здесь !!! JResponse::setBody($data); |
вставляем следующий код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Хак отключение кэширование корзины if (($start_pos = strpos($data, '<div class="visible-cart-content"')) !== false) { if (($end_pos = strpos($data, '</noscript>', $start_pos)) !== false) { if (!class_exists('JBrowser')) { JLoader::import('joomla.environment.browser'); } if (empty($document)) { $document = JFactory::getDocument(); } $renderer = $document->loadRenderer('module'); $module = JModuleHelper::getModule('mod_virtuemart_cart'); $data_virtuemart_cart = $renderer->render($module); $data = substr($data, 0, $start_pos) . $data_virtuemart_cart . substr($data, $end_pos); } } // Хак в существующей закэшированной странице обновляем содержимое корзины |
Там где начинается модуль
1 | $start_pos = strpos($data, '<div class="visible-cart-content"') |
И заканчивается
1 | $end_pos = strpos($data, '</noscript>', $start_pos) |
Также если у Вас установлен не стандартный модуль корзины, укажите его здесь
1 | $module = JModuleHelper::getModule('mod_virtuemart_cart'); |
Вот пожалуй и все! Теперь при работающем кэше на всех страницах сайта будет корректно отображаться корзина.
Класс, теперь у меня правильно отображается корзина и на скорость сайта ни как не влияет. Спасибо
Интересное решение
Супер, проблема актуальна. Столько всего перепробывал.
Работает ! УРАЁЁЁЁ!!!!!!!!!!!!!!!!!!!