Здравствуйте,
Ранее мне сделали обертку для 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 разработчик надстройки, молчит как партизан на допросе
Спасибо