Расширить поиск магазина

#
Расширить поиск магазина
хотелось немного расширить поиск магазина, тоесть к полю для ввода текста добавить ещё список что создётся в модуле "Списки". В макете я его прописал так

$list = & singleton('lists');                        
$res = $list->GetListItemsValuesById(12);
?><select name="list" style="width:100%;"><?php
while($mas = mysql_fetch_assoc($res)){
?><option value="<?=$mas['lists_items_id']?>"><?=$mas['lists_items_value']?></option>
<?php}
?></select><?php


список выводится нормально, но его ещё нужно как то прописать в шаблоне xsl не подскажите?
Также нужно чтобы выбранный элемент списка учитывался в поиске, это где-то в обработчике дописывать нужно? если да то подскажите как это сделать
Модератор
#
Re: Расширить поиск магазина
AndryNK,
1. Поиск или фильтр?
2. Уточните, какая связь XSL-шаблона (и которого) с PHP-кодом в макете?
#
Re: Расширить поиск магазина
1. чем отличается поиск от фильтра? вроде это одно и тоже..
2. не могу понять, что имеется под связью.. могу сказать что имеется макет, любой, главный или макет каталога интернет-магазина, в котором вставлен код, что в первом сообщении приводил, он выводит список(select), он находится внутри формы. Если посмотреть на с генерированную страницу, то оно выглядит таким образом:

<form name="search" method="get" action="/search/">
<select name="list" style="width:100%;">
<option value="135">второй</option>
<option value="134">первый</option>
<option value="136">третий</option>
</select>
<input title="Введите поисковый запрос" type="text" value="" id="textinput" name="text" />
<button title="Найти!" id="searchbutton" class="button" name="searchbutton">Найти</button>
</form>


список что внутри формы, основан на модуле "Списки", вот хотелось этот список тоже задействовать в поиске, сейчас пока только поле text задействовано.

Подскажите, что внутри xsl шаблона вставить и что в php дин.странице дописать, или где-то ещё что-то нужно?
Модератор
#
Re: Расширить поиск магазина
AndryNK писал(а):
1. чем отличается поиск от фильтра? вроде это одно и тоже..

Поиск - http://www.hostcms.ru/hostcms/modules/search/
Фильтр: http://demo.hostcms.ru/shop/videokamery/ с кнопкой "Применить".
#
Re: Расширить поиск магазина
спасибо за ссылки, посмотрел

как я понимаю запрос у меня
http://site.ru/search/?list=134&text=&searchbutton=
введёт на модуль "Поиск" ?

нашёл файл шаблона xsl\232.xsl
вот значит в нём нужно добавить код для вывода списка, как это сделать?

по вашей вышеприведённой ссылке интернет магазин, там есть выбор производителя, я так понимаю у меня аналогичная ситуация, только у меня свой список, но сути не меняет

ps: всё верно, это модуль поиск, шаблон находиться тут
XSL-шаблоны → Поиск  → Редактирование информации об XSL-шаблоне
Модератор
#
Re: Расширить поиск магазина
AndryNK,
Поиск идет по проиндексированной базе. Возможности ограничения условий по этой базе даны в руководстве по интеграции:
Ограничение поиска по определенным источникам контента ..........38
#
Re: Расширить поиск магазина
посмотрел, нужно сделать "Фильтр", то как показано у вас в демо версии список "Производитель", но у меня не производители а свой набор списка сделанный из модуля "Списки".
В первом сообщении я показал как я его вывожу в макете.
Как это можно сделать внутри шаблона "МагазинКаталогТоваров"?
Модератор
#
Re: Расширить поиск магазина
AndryNK,
Фильтр реализуется на PHP в типовой дин. странице магазина, там Вы можете найти большой блок обработки фильтра. Поиск в XSL-шаблоне не реализуется, это не его функция.
#
Re: Расширить поиск магазина
вы имеете в дин.стр. такой блок?

      /* Ограничиваем по производителю */
      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;
      }



а как чтобы список появился в разделе каталога как у вас в демо производители, чтото вроде этого

<select name="list" style="width:100%;">
<option value="135">второй</option>
<option value="134">первый</option>
<option value="136">третий</option>
</select>


при выборе элемента из этого списка, и нажатии кнопки, появились товары выбранного элемента, это возможно сделать?

вот как на этом сайте сделано _http://www.adamat.ru/shop/stoly-i-stulja/stoly/
где имеется форма с выбором списков их тут несколько: Форма, Материал, Стиль, Количество персон
#
Re: Расширить поиск магазина
помогите справиться с задачей, в дин.стр. "Интернет-магазин" после блока

if (to_int($_GET['producer_id']) > 0)


вставил свой блок

      
if (to_int($_GET['autoid']) > 0)
      {
         $element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
         $element['property_id'] = 36;
         $element['prefix'] = ' AND '; // префикс
         $element['if'] = '='; // Условие
         $element['value'] = to_int($_GET['autoid']);
         $element['sufix'] = " shop_properties_items_table.shop_properties_items_value = '".to_int($_GET['autoid'])."' ";                                       
         $param['select'][] = $element;

         $external_propertys['apply_filter'] = true;
      }      


в строчке
$element['property_id'] = 36;

значение 36 это значение доп. свойства

теперь через браузер вызываю ссылку сайт.ру/catalog/?autoid=142

и выдаёт такую ошибку

Ошибка выполнения запроса! - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'shop_properties_items_table.shop_properties_items_value = '142' AND ( ' at line 11
Ошибка выполнения запроса! - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'shop_properties_items_table.shop_properties_items_value = '142' AND ( ' at line 5


что я где не так указал не верно?

даже если строчку

$element['sufix'] = " shop_properties_items_table.shop_properties_items_value = '".to_int($_GET['autoid'])."' ";


заменить на эту

$element['sufix'] = '';


всёравно ошибка
Авторизация