Модуль для загрузки фильтра товаров в opencart.

В предыдущей статье Фильтр товаров opencart. Большие базы.  мы составили план разработки модуля для загрузки фильтра товаров в opencart.

Вспомним какова же необходимость создания такого модуля:

  1. Встроенный в opencart фильтр товаров позволяет только администрировать фильтры только для небольших баз данных
  2. Заполнение фильтра производится "вручную" из "админки"
  3. При создании фильтров, для средних и больших баз данных, временные затраты могут составить от нескольких дней и д нескольких недель
  4. Невозможность администрирования фильтров при частой смене номенклатуры
 Конечной целью создания модуля для загрузки фильтра товаров является получение инструмента позволяющего в автоматическом или полуавтоматическом режиме производить заполнение фильтра товаров из различных источников. Напомним, что для первого этапа мы выбрали, в качестве источника информации, атрибуты товаров, которые в большинстве баз интернет-магазинов уже содержат необходимые данные.

Кроме того мы разработали стандарт для правил, по которым будут загружаться фильтры. Наше первое правило:

rule_054 ; стекло => стекло ; хрусталь => хрусталь; мрамор => мрамор ; бронза => бронза ; абажур => абажур

 где rule_054 - это функция определяющая поведение алгоритма загрузки при реализации правила. Мы договорились, что функция с данным кодом (054) означает загрузку фильтра из атрибутов товаров.


 Реализация модуля  загрузки фильтра товаров!

Кроме модуля загрузки фильтра товаров нам понадобятся и другие модули сервисного плана, для работы с большими базами..например для их загрузки, предварительной обработки, перегрузки данных из интернет-магазинов на других CMS или для обмена данными с 1С Предриятие. Поэтому имеет смысл объединить все сервисные модули в один модуль.

Назовем наш модуль "управление базами и фильтрами" и разместим в меню "tools" для opencart 2.0 и выше. Для этого:

- в файл admincontrollercommonmenu.php добавляем строки

$data['text_servis_base'] = $this->language->get('text_servis_base');
$data['servis_base'] = $this->url->link('tool/servis_base', 'token=' . $this->session->data['token'], 'SSL');

- в файл adminlanguagerussiancommonmenu.php добавляем строку

$_['text_servis_base'] = 'Базы и фильтры';

- в файл adminviewtemplatecommonmenu.tpl в блок id="tools" добавляем строку 

<li><a href="<?php echo $servis_base; ?>"><?php echo $text_servis_base; ?></a></li>

Что получилось, смотрим в админке:


В строке контроллера для меню мы создали ссылку "$data['servis_base'] = $this->url->link('tool/servis_base' ...". Соответственно наш модуль должен размещаться в папке контроллера tool с именем "servis_base.php". Кроме того необходимо создать соответствующие шаблон, модель и языковой файл.  

В первую очередь необходимо определить минимальный набор управляющих элементов для интерфейса управления модулем. Это как минимум загрузка файла с правилами и кнопка для запуска процесса заполнения фильтра. Возможно нам понадобится поле ввода и элементы управления checkbox. Также добавим поле textarea для вывода отладочной информации и результатов работы модуля.

На первом этапе нам необходимо создать тестовую версию модуля, выполняющую разбор правил. К работе с базой перейдем на втором этапе.

Создадим все четыре файла модуля: (в статье, для экономии места и наглядности, не будем показывать стандартный код модуля) 

Файл контроллера - admincontrollertoolsevis_base.php


Файл шаблона admin/view/template/tool/servis_base.tpl

Файл модели admin/model/tool/servis_base.php