Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Сделать меню кешируемым


d2boy

Recommended Posts

Дописывал модуль под OC2 для вывода меню подкатегорий для заданной родительской категории.

Всё работает, но захотелось сделать меню с кешем


Нашёл нечто похожее от @Yesvik для стандартного модуля категорий. Нашёл похожий метод в моделе админки.

 

Но у меня реализация отличается, вот код

  Показати вміст

 

Может быть подскажет кто-нибудь, как это лучше реализовать?

Змінено користувачем d2boy
ошибки
Надіслати
Поділитися на інших сайтах


  В 24.11.2020 в 00:20, d2boy сказав:

Может быть подскажет кто-нибудь, как это лучше реализовать?

Expand  

Просто берёте $data['categories'] перед строками рендера и запихиваете в кеш с ключом соответствующим текущему запросу.

Соответственно, в начале файла проверяете по этому ключу есть ли оно уже в кеше.

 

$data['categories'] = $this->cache->get('category.menu.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (string)$this->request->get['path']);

if (empty($data['categories']) {
   /*
   * Код генерации меню
   */

   $this->cache->set('category.menu.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (string)$this->request->get['path'], $$data['categories']);
}

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/cat-by-parrent.tpl')) {
...

 

Надіслати
Поділитися на інших сайтах


  В 24.11.2020 в 02:31, Dotrox сказав:

Просто берёте $data['categories'] перед строками рендера и запихиваете в кеш с ключом соответствующим текущему запросу.

Соответственно, в начале файла проверяете по этому ключу есть ли оно уже в кеше.

 

$data['categories'] = $this->cache->get('category.menu.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (string)$this->request->get['path']);

if (empty($data['categories']) {
   /*
   * Код генерации меню
   */

   $this->cache->set('category.menu.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (string)$this->request->get['path'], $$data['categories']);
}

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/cat-by-parrent.tpl')) {
...

 

Expand  

 

Огромное спасибо, подправил в паре мест и заработало

 

  Показати вміст

 

Надіслати
Поділитися на інших сайтах


  В 28.11.2020 в 20:14, Dotrox сказав:

Зачем вам теперь эта строка?

$data['categories'] = array();

Вы в следующей же строке перезаписываете значение.

Expand  

 

Спасибо!

Да, надо выкинуть

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.