Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Поиск по каталогу (поиск товаров/объектов)

Автор samРаздел Шаблоны XSLT

Ответов: 14
Просмотров: 8585
Последний ответ 26 Января 2015, 12:07:22
от Axiomateria
Вывод в фильтрах по каталогу значение справочника для конкретной категории

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 1287
Последний ответ 29 Мая 2015, 12:51:38
от admin
Поиск по каталогу только среди товаров из активных разедлов

Автор khpvolgaРаздел Шаблоны XSLT

Ответов: 3
Просмотров: 1439
Последний ответ 04 Февраля 2016, 20:36:23
от crazygeorgio
Поиск по каталогу с подсказкой

Автор samРаздел Макросы UMI.CMS

Ответов: 5
Просмотров: 2246
Последний ответ 17 Ноября 2016, 22:56:22
от sam
Пустые теги в результатах поиска

Автор vsevaРаздел Настройка системы и модулей

Ответов: 1
Просмотров: 1847
Последний ответ 09 Июля 2012, 16:31:22
от admin

0 Пользователей и 1 Гость просматривают эту тему.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
для того чтобы осуществить поиск по всем объектам каталога, надо

во-первых, сделать вывод всех объектов каталога на одной странице

во-вторых, поле по которому будет осуществляться фильтрация должно быть назначено типу данных "Объект каталога" (чтобы подхватились все дочерние типы данных если такие имеются)

в-третьих, макрос для фильтрации должен иметь параметр который явно задает с каким типом данных надо работать, то есть udata/catalog/search/(36)/(cenovye_svojstva)//113 (если 113 hierarhy type id "Объект каталога")

хотя по сути системе все равно как вы выведите фильтр главное чтобы при его применении в адресную строку попали параметры вида ?fields_filter[field_name]=some_value и чтобы товары которые выводятся на этой странице имели в своем типе данных поле с таким названием

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Решил вопрос, залез на форум, прочитал Ваш пост - оказывается, что сделал именно так же. :) Благодарю за ответ.

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
ответ очень прост, хотя никак не очевиден)
используйте
<xsl:apply-templates select="document('udata://catalog/search/id')" />
, где id номер каталога с товарами (любого ) или более правильный вариант

<xsl:apply-templates select="document('udata://catalog/search////11')" />


пояснение:
дело в том что для того чтобы система вывела поля фильтра она должна знать какие поля выводить для фильтрации (для этого в шаблоне данных у поля должна стоять галочка "фильтровать"), но это еще не все система же должна знать в каком типе данных искать поля для фильтрации, по умолчпнию фильтр выводит поля относящиеся к типу данных который доминантен в данном разделе (раздел это первый параметр макроса, если он не указан берется id текущей страницы), в первом варианте мы подкинули системе id раздела внутри которого лежат объекты каталога и она правильно определила тип домининрующих страниц., но так как к разделу привязывать не стоит (вдруг его удалят).

В макросе search есть еще один параметр, который не описали в документации. Параметры макроса:
public function search($category_id = false, $group_names = "", $template = "default", $type_id = false) 
первые 3 описанны, а вот 4 и есть тот тип данных (hierarhy type id)? который система и определяет пj id раздела (наш первый вариант), и если указать при вызове макроса search параметр $type_id , то внезависимости от места вызова система будет выводить поля этого типа данный (11 это id типа данных "объект каталога"). отсюда и получилась у нас строчка  
<xsl:apply-templates select="document('udata://catalog/search////11')" />


Как я вижу -  у меня сходная задача, то есть вывод фильтров у меня такой:
<xsl:apply-templates select="document(concat('udata://catalog/search////', 132))"/>
где 132 это ID типа данных объекта каталога, по параметрам которого необходимо делать поиск по фильтрам.
Вывод этих фильтров успешно выводится у меня в шаблоне "сквозняком", то есть на всех страницах сайта, включая и на главной странице сайта и на всех остальных контентных, новостных и прочих.
Но на данный момент результаты поиска по фильтрам выводятся только в разделах каталога.  

Вопрос вот в чём: как вывести эти результаты поиска на отдельную контентую страницу (специально созданную в структуре сайта) ? Или как выводить эти результаты на главную страницу каталога http://domen.ru/shop/, если можно обойтись без отдельной контентной страницы ?
Ведь пользователь, допустим, находясь на главной странице или к примеру на странице новостей вдруг захочет воспользоваться поиском по каталогу и результатов не увидит...

В идеале хотелось бы вывести результаты поиска по фильтрам на главный раздел каталога, который выводится по такому шаблону:
    <xsl:template match="result[page/@type-id=82]">
        <div umi:element-id="{$document-page-id}" umi:field-name="descr" umi:empty="&empty-page-content;">
            <xsl:value-of select=".//property[@name = 'descr']/value" disable-output-escaping="yes" />
        </div>
        <xsl:apply-templates select="document('udata://catalog/getObjectsList/notemplate/(mode=all)')" />
    </xsl:template>
где 82 это ID типа данных "Раздел каталога"
« Последнее редактирование: 05 Марта 2014, 23:37:09 от Axiomateria »

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Вопрос решился очень просто. Если кому интересно - могу поделиться опытом.