Поиск по производителям товара


Задача:
Банальная в общем то задача. Есть список ссылок с названиями производителей товара такого вида:


При нажатии на ссылку должен выводиться список товаров соответствующего производителя в категории.

Я могу написать сниппет и решить задачу вручную, но существует mSearch который занимается всякими поисками и фильтрами товара. Я им не пользовался, и пробежавшись по описанию, не много запутался.
Судя по описанию и вопросам которые люди задают его обычно используют для текстового поиска или создания фильтров, а под для моей задачки, кажется, не используют.

Вопрос:
Каким путём лучше решать такую задачу, своим кодом или mSearch или ещё чем?
Я явно туплю, а здесь обычно быстро пинают в нужную сторону.

P.S.: не хочется строить велосипеды если mSearch не приспособленно для этого и в тоже время не хочется тратить время на сниппеты если он решает эту задачу на мах. Спасибо.
Дмитрий Иванов
17 июня 2013, 17:44
modx.pro
1 427
0

Комментарии: 7

Василий Наумкин
17 июня 2013, 21:52
0
Если речь про miniShop2 то эту задачу решает msProducts
&where=`{"Vendor.name:LIKE":"%Sony%"}`
для вывода товаров производителя Sony
&where=`{"Vendor.id":5}`
для вывода производителя с id = 5

Конечно, производители должны быть забиты в настройках и назначены товарам.
    Дмитрий Иванов
    17 июня 2013, 21:54
    0
    Во! Спасибо. Я бы точно не додумался и нагородил огородов. :)
    P.S.: конечно ms2, он уже как родной!
      Дмитрий Иванов
      24 июня 2013, 20:33
      0
      Не могу понять. Если у меня в ссылке указан id производителя то при переходе по ссылке этот id надо подставить в параметр «where» msProduct'а. Я так понимаю, что тут надо сделать некий финт ушами, чтобы всунуть id производителя в этот параметр. Но никак не допру как именно это сделать. Может подскажете чего?
        Дмитрий Иванов
        24 июня 2013, 21:36
        0
        В общем, сделал такую конструкцию:
        Создал страницу ресурс Brand. с кодом:
        [[!getPage@GetPage?
            &element=`msProducts`
            &parents=`6`
            &resources=`[[!mSearch@searchVendors]] `
           ]]
        ...
        пагинация и JS скрипты
        В mSearch параметры такие:
        &parents=`6` &returnIds=`1`

        Создал страницу Test с формой:
        <form class="sisea-search-form" action="[[~[[*id]]]]"  method="get">
            <fieldset>
            <legend>AJAX поиск mSearch</legend>
            <label>Строка поиска</label>
            <input type="text" name="query" class="input-xlarge search-query" value="" placeholder="Введите запрос, например - modx">
        	<input type="submit" class="btn btn-success" value="Искать!" >
            </fieldset>
            </form>
        <div id="site-search-results"></div>
        Это всё по этому уроку.
        Теперь при вводе в названий производителей товаров они правильно выводятся.

        Осталось непонятным:
        1) Как сделать так, чтобы поиск осуществлялся не через Ajax, а при переходе по ссылке?
        2) Как передать номер текущего родителя в msProduct, чтобы искалось относительно текущей категории товара, а не по всем?
          Василий Наумкин
          25 июня 2013, 04:25
          0
          1. Убери javascript, который реализует ajax запросы.

          2. Если используешь mSearch, то нужно указать параметр
          &parents=`[[*id]]`
            Дмитрий Иванов
            25 июня 2013, 12:08
            0
            Получилось, спасибо.
            Осталась одна проблема которую не могу победить, хотя уже долго ковыряюсь:
            Когда индексировал документы я добавил в параметрах поле vendor. Но протестировав поиск, я понял, что он не ищет по названиям производителей. Поиск осуществляется по стандартным полям и выводятся товары у которых в названии ([[*pagetitle]]) указано название производителя.
            Ставил в параметрах includeMS: Да, не помогло. Ну это от отчаяния.
            Видимо надо как то иначе индексировать либо это не возможно сделать. Прочесал все описания и комментарии по этому поводу, пока не нашёл ответа.
            Использую mSearch.
              Дмитрий Иванов
              25 июня 2013, 19:24
              0
              Всё, вопрос снимается. Всё решил написанием мини сниппета. Теперь уже ясно, что задача ерудовая. Хотя бился долго.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7