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

Адаптация под новую версию ocfilter


Recommended Posts

Здравствуйте,

Ранее мне сделали обертку для ocfilter Версии 4.7ххх , чтобы его можно было выводить в любое место(главная, статьи, блог... не важно) все работало вполне адекватно, но появиласть необходимость сделать тоже-самое но на новую версию фильтра...

фильтр я поставил, вывел обертку на главную, и сразу вылетела 500 ошибка.

сделал логирование ошибок
 

[07-Nov-2021 13:18:05 UTC] PHP Fatal error:  Uncaught Error: Class 'OCFilter' not found in /home/p/pikenebl/***/public_html/catalog/controller/extension/module/lazyfilter.php:54
Stack trace:
#0 [internal function]: ControllerExtensionModuleLazyFilter->index(Array)
#1 /home/p/pikenebl/***/storage/modification/system/engine/action.php(79): call_user_func_array(Array, Array)
#2 /home/p/pikenebl/***/storage/modification/system/engine/loader.php(48): Action->execute(Object(Registry), Array)
#3 /home/p/pikenebl/***/storage/modification/catalog/controller/common/content_top.php(70): Loader->controller('extension/modul...')
#4 [internal function]: ControllerCommonContentTop->index(Array)
#5 /home/p/pikenebl/***/storage/modification/system/engine/action.php(79): call_user_func_array(Array, Array)
#6 /home/p/pikenebl/***/storage/modification/system/engine/loader.php(48): Action->execute(Object(Registry), Array)
#7 /home/p/pikenebl/***/public_html/catalog/controller/common/h in /home/p/pikenebl/***/public_html/catalog/controller/extension/module/lazyfilter.php on line 54

 

в файле по на этой строке находиться 

$this->registry->set('ocfilter', new OCFilter($this->registry));

что является частью цикла

		if (!$cached || (empty($data['lazyfilter_data']))) {
			
			$ocf_settings = $this->getSetting('module_ocfilter');
			$ocf_settings['mode'] = 'vertical';

			$this->load->model('catalog/category');

			$categories = [];
			if (isset($this->request->get['path']) && $data['sub_show']) {
				$path = explode('_', $this->request->get['path']);
				$category_id = end($path);
				$categories = $this->model_catalog_category->getCategories($category_id);
			} else {
				$results = $this->config->get('module_lazyfilter_categories');
				foreach ($results as $value) {
					$category_id = (int) $value;
					$categories[$category_id] = $this->model_catalog_category->getCategory($category_id);
				}
			}

			if (empty($categories)) {
				return;
			}

			foreach ($categories as $category_data) {
				$category_id = (int) $category_data['category_id'];
				
				$this->request->get['path'] = $category_id;
				
				$this->registry->set('ocfilter', new OCFilter($this->registry));

				$ocfilter_data = $this->load->controller('extension/module/ocfilter', $ocf_settings);

				unset($this->request->get['path']);
				
				$ocfilter_data = str_replace('#ocfilter', '#ocfilter-' . $category_id, $ocfilter_data);
				$ocfilter_data = str_replace('id="ocfilter', 'id="ocfilter-' . $category_id, $ocfilter_data);
				
				$data['lazyfilter_data'][$category_id] = [
					'category_data' => $category_data,
					'filter_data' => $ocfilter_data,
				];

			}
			if ($cached) {
				$this->cache->set('module.lazyfilter', $data['lazyfilter_data']);
			}
		}
	
		$this->load->language('extension/module/lazyfilter');
		
		return $this->load->view('extension/module/lazyfilter', $data);

 

когда я комментирую строку 

$this->registry->set('ocfilter', new OCFilter($this->registry));

и путь на главной указан "чистый"(просто доменное имя), то во вкладках фильтр показывается, но только 1 категория на всех вкладках

 

сначала я грешил на то, что нет нужных данных в массиве ($this->registry), но после более внимательного просмотра логов ошибок, я понял что проблема в отсутствии класса OCFilter

может кто подкинуть идей в какой стороне надо смотреть?

 

PS разработчик надстройки, молчит как партизан на допросе

 

Спасибо

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


10 минут назад, Blast сказал:

в новой версии ж из коробки можно вывести фильтр на любой странице и ничего изобретать не нужно

мне отдельные вкладки в нем нужны

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


4 часа назад, Demanoco сказал:

когда я комментирую строку 


$this->registry->set('ocfilter', new OCFilter($this->registry));

и путь на главной указан "чистый"(просто доменное имя), то во вкладках фильтр показывается, но только 1 категория на всех вкладках

 

сначала я грешил на то, что нет нужных данных в массиве ($this->registry), но после более внимательного просмотра логов ошибок, я понял что проблема в отсутствии класса OCFilter

 

зачем методом ТЫКА решать свои проблемы по коду, тем более вы не имеете нужных знаний

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

 

36 минут назад, Venter сказал:

 

зачем методом ТЫКА решать свои проблемы по коду, тем более вы не имеете нужных знаний

что в какой теме нужно разбираться чтобы решить мою проблему? я для этого на форум и написал чтобы узнать 

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


2 часа назад, Demanoco сказал:

Может кто подсказать по этому вопросу что-то?

подтолкну в нужную сторону. нужно исправить условие чтоб подключился класс там где вам нужно. 

 

В 08.11.2021 в 01:11, Demanoco сказал:

что в какой теме нужно разбираться чтобы решить мою проблему?

это в первую очередь PHP и уметь читать код

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

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

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

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

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

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

Вхід

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

Вхід зараз

×
×
  • Створити...

Important Information

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