Вывод производителей в подменю пункта(категории товаров) основного меню

#
Вывод производителей в подменю пункта(категории товаров) основного меню
Добрый день!

Есть основное меню, представляющее из себя список категорий товаров из магазина

1) Как сделать так, чтобы при наведении на категорию выпадал список всех производителей товаров из этой категории?

Также, есть блок поиска на главной странице, в котором расположены 4 поля ввода и кнопка сабмита.
В 1 поле выбирается категория товара, в зависимости от выбора во 2 поле подгружается список производителей товаров из данной категории. в 3 и 4 поле настраивается фильтр по дополнительному свойству товара. Нажимается кнопка, производится поиск и переход к каталогу товаров.

2) как это реализовать?
#
Re: Вывод производителей в подменю пункта(категории товаров) основного меню
m66 писал(а):
Как сделать так, чтобы при наведении на категорию выпадал список всех производителей товаров из этой категории?
- можно посылать на сервер AJAX-запрос, получив который(например, в коде настроек тип. дин. страницы магазина) следует выполнить SQL-запрос и получить всех производителей товаров нужной группы. И отправить их в ответ клиенту.
m66 писал(а):
В 1 поле выбирается категория товара, в зависимости от выбора во 2 поле подгружается список производителей товаров из данной категории. в 3 и 4 поле настраивается фильтр по дополнительному свойству товара
- то же самое: вам нужно будет производить программную реализацию. Т.е. по событию выбора значения в списке посылать асинхронный запрос на сервер(в определенный раздел сайта, типом которого нужно сделать "Типовую динамическую страницу", либо "Динамическую страницу" ), там его обрабатывать, формируя данные для следующего списка. Для получения данных из базы нужно будет либо писать SQL-запросы, либо использовать методы классов, опубликованные в нашем API.
#
Re: Re: Вывод производителей в подменю пункта(категории товаров) основного меню
Наталья! Огромное спасибо!

Я предполагал, что нужно двигаться в таком направлении.
Просто у меня очень маленький опыт работы с hostcms, и я не был уверен, что это верный путь.
#
Re: Вывод производителей в подменю пункта(категории товаров) основного меню
m66, не за что)
#
Re: Вывод производителей в подменю пункта(категории товаров) основного меню
Наталья! Добрый день


Помогите, пожалуйста со следующим багом:

В форме поиска я передаю один стандартный параметр фильтра:

1) Производителя(producer_id)

и 2 своих:

2) Мощность ОТ (pwr_from)
3) Мощность ДО (pwr_to).

Данные принимает динамическая страница "Интернет-магазин".
С производителем всё в порядке, по нему данные прекрасно фильтруются.

Я взял работающий код формирования фильтра по производителю:

      /* Ограничиваем по производителю */
      if (to_int($_GET['producer_id']) > 0)
      {
         $element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
         $element['name'] = 'shop_producers_list_id';
         $element['prefix'] = 'AND'; // префикс
         $element['if'] = '='; // Условие
         $element['value'] = to_int($_GET['producer_id']);
         $element['sufix'] = '';
         $param['select'][] = $element;

         $external_propertys['producer_id'] = ''.to_int($_GET['producer_id']);

         /* Применять фильтр */
         $external_propertys['apply_filter'] = true;
      }
      

и на его основе создал код для обработки своих параметров(они в виде доп свойств)

      /* Ограничиваем по мощности/производительности ОТ */
      if (to_int($_GET['pwr_from']) > 0)
      {
         $element = array();
         $element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
         //$element['name'] = '';
         $element['property_id'] = $param['current_group_id'] == 597 ? 147 : 137;
         $element['prefix'] = ' AND '; // префикс
         $element['if'] = '>='; // Условие
         $element['value'] = ''.to_int($_GET['pwr_from']);
         $element['sufix'] = '';
         $param['select'][] = $element;

         $external_propertys['pwr_from'] = ''.to_int($_GET['pwr_from']);

         /* Применять фильтр */
         $external_propertys['apply_filter'] = true;
      }
      
      /* Ограничиваем по мощности/производительности ДО */
      if (to_int($_GET['pwr_to']) > 0)
      {
         $element = array();
         $element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
         //$element['name'] = '';
         $element['property_id'] = $param['current_group_id'] == 597 ? 147 : 137;
         $element['prefix'] = ' AND '; // префикс
         $element['if'] = '<='; // Условие
         $element['value'] = ''.to_int($_GET['pwr_to']);
         $element['sufix'] = '';
         $param['select'][] = $element;

         $external_propertys['pwr_to'] = to_int($_GET['pwr_to']);

         /* Применять фильтр */
         $external_propertys['apply_filter'] = true;
      }


Вроде бы всё должно быть ОК.

Тем не менее фильтр работает аццки не логично и иногда срабатывает, чаще нет.

В чём может быть проблема?
Я правильно обрабатываю доп свойства?
Может быть проблема в формировании sql-запроса?
Как можно посмотреть, какой именно запрос ушёл в базу?
#
Re: Вывод производителей в подменю пункта(категории товаров) основного меню
m66 писал(а):
В чём может быть проблема?
- на первый взгляд проблем в коде нет. Поэтому лучше начать с просмотра сгенерированного системой(по вашему конструктору) SQL-запроса.

m66 писал(а):
Как можно посмотреть, какой именно запрос ушёл в базу?
- см. стр. 8 нашего руководства по интеграции(http://www.hostcms.ru/download/5/HostCMS_v_5_DesignIntegrationGuide.pdf).

#
Re: Вывод производителей в подменю пункта(категории товаров) основного меню
Наталья, в очредной раз спасибо!

Оказалось, что в запросе свойства и значения сравниваются как строки.
И мне пришлось вот так извратиться:

         $element['if'] = '* 1 >= CAST('; // Условие
         $element['value'] =  to_int($_GET['pwr_from']);
         $element['sufix'] = ' AS BINARY)';

Сожет, есть какой-то более верный способ?)
#
Re: Вывод производителей в подменю пункта(категории товаров) основного меню
Пожалуйста.
m66 писал(а):
Оказалось, что в запросе свойства и значения сравниваются как строки
- да, т.к. значения всех свойств(даже разных типов) хранятся в едином поле(shop_properties_items_value) одной таблицы(shop_properties_items_table), типом которого является текст.
m66 писал(а):
Сожет, есть какой-то более верный способ?)
- более верного способа нет. См. http://hostcms.ru/forums/17/6079/
#
Re: Вывод производителей в подменю пункта(категории товаров) основного меню
Наталья, вы не могли бы мне помочь в другой теме: http://hostcms.ru/forums/17/6626/ ?
#
Re: Вывод производителей в подменю пункта(категории товаров) основного меню
Ответ дан.
Авторизация