MODX Revo - Создание поиска для блога

На этом уроке мы создадим для нашего блога, который работает под управлением CMF MODX Revolution, систему поиска с помощью компонента mSearch.

  1. Скачаем и установим компонент "mSearch".

    MODX - установка компонента mSearch


  2. Проиндексируем страницы нашего сайта.

    Индексация существующих страниц блога осуществляется посредством нижеприведённого кода, который необходимо добавить в любой шаблон.

    [[!mSearch?
      &indexer=`1`
      &offset=`1`
      &limit=`500`
    ]]
    

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

    Например, вставим вышеприведённый код в содержимое главной страницы:

    MODX - индексирование ресурсов с помощью сниппета mSearch

    Откроем главную страницу нашего блога и увидим результат индексирования ресурсов сниппетом mSearch:

    MODX - результат индексирования ресурсов с помощью сниппета mSearch

    После этого данный код можно удалить из содержимого главной страницы.

    Во время исполнения данный сниппет проиндексирует первые 500 ресурсов нашего блога. Первый параметр (indexer) указывает на то, что сниппет mSearch будет выполнять не поиск, а индексацию ресурсов блога. Второй и третий параметр (offset и limit) задаёт ограничение на выборку ресурсов, которые необходимо проиндексировать. Если на Вашем блоге содержится больше чем 500 ресурсов (например, 1200), то производить их индексацию придётся в несколько запусков:

    MODX - индексирование большого количества ресурсов

    Индексацию ресурсов достаточно выполнить только один раз, после установки компонента mSearch. Ресурсы, которые будут добавляться уже после установки компонента mSearch индексировать с помощью сниппета не надо. Они будут индексироваться автоматически с помощью плагина, который идёт в комплекте с данным компонентом.


  3. Изменим название плейсхолдеру total в сниппете mSearch. Это необходимо сделать для того, чтобы избежать конфликтов, т.к. данное имя плейсхолдера также использует компонент Tickets.

    MODX - редактирование сниппета mSearch


  4. Создадим ресурс (страницу) "Поиск" и запомним его идентификатор (id). В дальнейшем он нам пригодится для создания формы поиска.

    MODX - создание ресурса Search


  5. Создадим шаблон "Поиск".

    MODX - создадим шаблон поиск


    • Скопируем код из любого другого шаблона (например, блог). Удалим из него лишний код, т.е. оставим только код, формирующий основную структуру веб-страницы.

      <!DOCTYPE html>
      <html lang="ru">
      [[$chunk.head]]
      <body>
        <div class="container"> 
          <div class="row">
            [[$chunk.header]]
            [[$chunk.navbar]]
            <div class="main-block col-md-8">
              <h1 class="h2 page-header">[[*pagetitle]]</h1>
              
            </div>
            <div class="col-md-4">
            </div>
          </div>
        </div>
        [[$chunk.footer]]
      </body>
      </html>
      

    • Разработаем форму поиска:

      MODX - форма поиска

      <!-- Контейнер, который будет содержать форму -->
      <div class="well">
        <!-- Форма поиска -->
        <!-- 14 - это id ресурса, в котором будут отображаться результаты поиска -->
        <form action="[[++site_url]][[~14]]" method="get">
          <div class="row">
            <div class="form-group col-md-10">
              <input id="inputSearch" type="text" class="form-control" name="query" maxlength="50" value="[[+mse.query]]" placeholder="Найти">
            </div>
            <button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-search"></i> Поиск</button>
          </div>
        </form>
      </div>
      

    • Разработаем код, который будет выводить результаты поиска с помощью сниппетов pdoResources и mSearch:

      [[!pdoResources?
        &parents=`2`
        &showHidden=`1`
        &resources=`[[!mSearch? &parents=`2` &showHidden=`1` &returnIds=`1`]]`
        &limit=`10`
        &tpl=`searchTpl`
        &tplWrapper=`@INLINE <h2 class="h3 page-header">Результаты поиска по запросу: [[+mse.query]] ([[+mse.total]])</h2> [[+mse.total:isnot=`0`:and:isnot=``:then=`[[+output]]`]]`
      ]]
      

      где:

      • parents=`2` - указывает сниппету mSearch на то, что поиск необходимо производить только в ресурсах, имеющих в качестве родителя ресурс с id=2.

      • &showHidden=`1` - указывает сниппетам на то, что необходимо выбирать ресурсы, скрытые для меню.

      • returnIds=`1` - указывает сниппету mSearch на то, что необходимо возвращать вместо оформленных результатов идентификаторы (id) ресурсов.

      • tpl=`searchTpl` - указываем сниппету pdoResources на то, что в качестве шаблона для вывода каждого найденного результата (ресурса) необходимо использовать чанк searchTpl.

      • limit=`10` - указывает сниппету pdoResources на то, что необходимо ограничить количество результатов выборки до 10.

      • resources - указывает сниппету pdoResources на то, что необходимо использовать ресурсы предоставленные сниппетом mSearch.

      • tplWrapper - шаблон, который предназначен для оборачивания результатов работы сниппета pdoResources. Код [[+mse.total... выполняет следующее: он проверяет, не является ли значение плейсхолдера [[+mse.total]] равным нулю и пустой строке. Если это условие выполняется, то выводятся результаты работы сниппета с помощью плейсхолдера [[+output]]. В противном случае ничего не выводится. Данное условие необходимо из-за того, что когда сниппет mSearch не находит не один подходящий ресурс, то он выводит все ресурсы сайта.

      • [[+mse.total]] - плейсхолдер, который содержит число найденных ресурсов сниппетом mSearch.

      • [[+mse.query]] - плейсхолдер, который содержит текст запроса.


    • Итоговый код шаблона "Поиск":

    • <!DOCTYPE html>
      <html lang="ru">
      [[$chunk.head]]
      <body>
        <div class="container"> 
          <div class="row">
            [[$chunk.header]]
            [[$chunk.navbar]]
            <div class="main-block col-md-8">
              <h1 class="h2 page-header">[[*pagetitle]]</h1>
              <div class="well">
                <form action="[[++site_url]][[~14]]" method="get">
                  <div class="row">
                    <div class="form-group col-md-10">
                      <input id="inputSearch" type="text" class="form-control" name="query" maxlength="50" value="[[+mse.query]]" placeholder="Найти">
                    </div>
                    <button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-search"></i> Поиск</button>
                  </div>
                </form>
              </div>
              [[!pdoResources?
               &parents=`2`
               &showHidden=`1`
               &resources=`[[!mSearch? &parents=`2` &showHidden=`1` &returnIds=`1`]]`
               &limit=`10`
               &tpl=`searchTpl`
               &tplWrapper=`@INLINE <h2 class="h3 page-header">Результаты поиска по запросу: [[+mse.query]] ([[+mse.total]])</h2> [[+mse.total:isnot=`0`:and:isnot=``:then=`[[+output]]`]]`
              ]]
            </div>
            <div class="col-md-4">
            </div>
          </div>
        </div>
        [[$chunk.footer]]
      </body>
      </html>
      

  6. Создадим чанк searchTpl со следующим содержимым:

    MODX - шаблон, на основе которого выводится каждый найденный результат

    <div class="panel panel-default">
      <div class="panel-body">
        <a href="[[++site_url]][[~[[+id]]]]">[[+pagetitle]]</a>
      </div>
      <div class="panel-footer">[[+description]]</div>
    </div>
    

  7. Установим ресурсу (странице) "Поиск" шаблон "Поиск".

    MODX - установка ресурсу Поиск шаблон Поиск


  8. Создадим форму "Поиск" для остальных страниц блога.

    • Создадим чанк "search" со следующим содержимым:

      <div class="last-comment">
        <h4 class="page-header text-center">Поиск</h4>
        <form action="[[++site_url]][[~14]]" method="get">
          <div class="input-group">
            <input type="text" class="form-control" name="query" maxlength="50" value="" placeholder="Найти">
            <span class="input-group-btn">
              <button type="submit" class="btn btn-default">Найти</button>
            </span>
          </div>
        </form>
      </div>
      

    • Добавим чанк "search" в необходимые шаблоны нашего блога:

      MODX - добавление чанка search в шаблон Пост

Результаты урока представим в виде следующих изображений:

MODX - форма поиска на странице поста

MODX - страница для поиска и отображения результатов поиска

MODX - найденные страницы по запросу



   MODX Revo 0    2709 0

Комментарии (38)

  1. Влад # 0
    А точно в коде
    [[!pdoResources?
    &parents=`2`
    &resources=`[[!mSearch? &parents=`2` &returnIds=`1`]]`
    &limit=`10`
    &tpl=`searchTpl`
    &tplWrapper=`@INLINE <h2 class="h3 page-header">Результаты поиска по запросу: [[+mse.query]] ([[+mse.total]])</h2> [[+mse.total:isnot=`0`:and:isnot=``:then=`[[+output]]`]]`
    ]]
    
    нет ошибки? Просто с этим кодом поиск вообще ничего не находит. Но если вместо него добавить [[!mSearch? &parents=`2`]], то всё работает должным образом
    1. Александр Мальцев # 0
      Да, код правильный.
      Данный код в отличие от Вашего позволяет настроить оформление результатов с помощью чанка searchTpl.

      Найти ошибку можно следующим образом:
      1. Удалить параметр &tplWrapper и проверить ещё раз.
      2. Если у Вас находятся результаты, то необходимо проверить что у Вас содержит плейсхолдер +mse.total
      3. Если у Вас всё равно не находятся результаты, то необходимо проверить наличие чанка searchTpl и что он содержит
      1. Алексей # 0
        Шеф, мне снова нужна твоя помощь) В общем, поиск по статьям не происходит. Если вбить слово «легко», которое есть в статье и её названии, то результат такой
        Результаты поиска по запросу: легко (0)

        Если вбить слово «способы», которое есть в названии раздела, то результат есть, но по разделу (выводит название раздела). Почему то, глубже разделов не ищет. У меня меню правда немного по другому организовано Ресурс (контейнер) и в нём уже Раздел с тикетами.
        1. Если убрать &tplWrapper, то выводит и статьи и разделы.
        2. Не пойму как проверить, что содержит плейсхолдер +mse.total.
        3. Приведу оба кода на всякий случай, вроде, всё ровно.
        [[!pdoResources?
                 &parents=`-2,-3,-4,-5`
                 &resources=`[[!mSearch? &parents=`-2,-3,-4,-5` &returnIds=`1`]]`
                 &limit=`10`
                 &tpl=`tpl.search`
                 &tplWrapper=`@INLINE <h2">Результаты поиска по запросу: [[+mse.query]] ([[+mse.total]])</h2> [[+mse.total:isnot=`0`:and:isnot=``:then=`[[+output]]`]]`
        ]]
        tpl.search
        <div class="entry">
        <h2><a href="[[++site_url]][[~[[+id]]]]">[[+pagetitle]]</a></h2>
        [[+description]]
        <div class="button"><a href="[[~[[+id]]]]">Читать дальше</a></div>
        </div>
        1. Александр Мальцев # 0
          Интересный у тебя параметр parent. Одни исключения, а где искать?
          Если нужно по всему сайту за исключением ресурсов 2, 3, 4 и 5, то тогда так:
          &parents=`0,-2,-3,-4,-5`
          
          И в параметре resources тоже самое…
          Плейсхолдер mse.total содержит количество найденных записей.
          Если необходимо вывести на экран что он выводит, то удали строчку:
          &tpl=`tpl.search`
          
          1. Алексей # 0
            Как где) Во всех остальных ресурсах, кроме этих) Я так понял из документации) По крайней мере, у меня pdoMenu прекрасно работает с параметром &parents=`-1`, чтобы не было ссылки на главную)
            Так вообще ничего не ищет, даже раздел.
            &parents=`0,-2,-3,-4,-5`
            Для проверки поставил так
            &parents=`0`
            Всё равно находит только результаты, если искомое слово входит в название раздела. Как будто глубина поиска ограничена. Такая же ситуация с картой сайта) Напишу комменту в соответствующую тему)
            1. Александр Мальцев # 0
              Должно работать. У меня в тестовом примере всё работает. Проверь всё внимательно.
              1. Алексей # 0
                Вот этот твой совет натолкнул меня на решение проблемы)
                &showHidden=`1`
                в параметры mSearch добавил и всё заработало)
    2. Павел # 0
      Здравствуйте!!! Подскажите пожалуйста как можно сделать вот такой поиск здесь по базе данных, зарание благодарю!!!!!!!!!!!1
      1. Алексей # 0
        В поиск провайдера по адресу дома, который вы указали в качестве пример, используется скрипт jquery.autocomplete.js. Поищите на просторах интернета как его прикрутить, там есть какие то нюансы
      2. Павел # 0
        Здраствуте!!! Помогите пожалуйста разобраться вот с этим приложением sekFormTools. Нужен поиск с автозаполнением на сайте а с английским проблема! Есть скрипты которые вы указывали выше jquery.autocomplete.js, но хочется знать подходит это приложение или нет! Зарание спасибо!!!
        1. Андрей # 0
          3. Изменим название плейсхолдеру total в сниппете mSearch. Это необходимо сделать для того, чтобы избежать конфликтов, т.к. данное имя плейсхолдера также использует компонент Tickets.
          из текста не ясно, что именно нужно поменять: в тексте
          Изменим название плейсхолдеру total
          на картинке подчеркнут $plPrefix
          1. Александр Мальцев # 0
            Извините за то, что непонятно.
            Красным подчёркнуто то, что необходимо добавить в код.
            Это необходимо сделать для того, чтобы плейсхолдер можно было вызывать не так [[+total]] (т.к. данное имя уже занято другим компонентом), а так [[+mse.total]].
            Т.е. необходимо заменить $totalVar на $plPrefix.$totalVar.
          2. Антон # 0
            Сделал так как написано, при нажатии на кнопку поиска идет переадресация на страницу /sidebar-page?query=hh
            Куда копать?
            1. Александр Мальцев # 0
              На четвёртом шаге мы создавали эту страницу «Поиск» (у меня id страницы =14).
              На пятом шаге в пункте «Разработаем форму поиска» мы указывали id ресурса (14), который мы создали на 4 шаге.
              <form action="[[++site_url]][[~14]]" method="get">
              
              На мой взгляд Вы скорее всего где-то перепутали на моментах, описанных мной выше. Проверьте совпадает ли у Вас идентификатор страницы «Поиск» с идентификатор в форме.
            2. Алексей # 0
              Шеф, а как реализовать постраничную разбивку результатов поиска? А то получается результатов больше, чем лимит вывода)
              1. Александр Мальцев # 0
                С помощью pdoPage (например, по 5 штук):
                [[!pdoPage? 
                  &element=`pdoResources`
                  &parents=`2`
                  &showHidden=`1`
                  &resources=`[[!mSearch? &parents=`2` &showHidden=`1` &returnIds=`1`]]`
                  &limit=`5`
                  &tpl=`searchTpl`
                  &tplWrapper=`@INLINE <h2 class="h3 page-header">Результаты поиска по запросу: [[+mse.query]] ([[+mse.total]])</h2>[[+output]]`
                ]]
                [[!+page.nav]]
                
                1. Алексей # 0
                  Поиск работает. А вот разбивка на страницы нет. Я пытался сам через pdoPage сделать. Не получилось. Код аналогичный был, думал что-то не так делаю)
                  1. Алексей # 0
                    Шеф) что Я делаю не так?)
                    1. Александр Мальцев # 0
                      Добавь &showLog=`1` и посмотри…
                      1. Алексей # 0
                        Ничё не понимаю( вроде, нет ошибок…

                        Вот вызов
                        [[!pdoPage? 
                            &element=`pdoResources`
                            &parents=`-2,-3,-4,-5`
                            &showHidden=`1`
                            &hideContainers=`1`
                            &resources=`[[!mSearch? &parents=`-2,-3,-4,-5` &showHidden=`1` &hideContainers=`1` &returnIds=`1`]]`
                            &limit=`10`
                            &tpl=`tpl.search`
                            &tplWrapper=`@INLINE <h2>Результаты поиска по запросу: [[+mse.query]] ([[+mse.total]])</h2> 
                            [[+mse.total:isnot=`0`:and:isnot=``:then=`[[+output]]`]]`
                            &showLog=`1`
                        ]]
                        
                        [[!+page.nav]]

                        Вот лог
                        0.0001101: pdoTools loaded
                        0.0000238: xPDO query object created
                        0.0003519: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
                        0.0007322: Processed additional conditions
                        0.0010219: Added where condition: modResource.id:IN(53,56,63,65,81,1,76,11,12,13), modResource.parent:IN(1,6,7,8,9,10,5,4,40,2,41,3,44,46,47,11,12,43,13,35,69,15,14,16,82,17,18,19,20,24,50,56,74,59,60,76,79,84,87,73,80,78,66,86,81,83,21,22,23,45,49,72,85,25,26,27,28,62,71,70,75,64,67,77,29,30,31,32,33,68,38,53,61,37,39,42,57,63,58,65,34,36,51,52,54,55,48), modResource.parent:NOT IN(2,3,4,5), modResource.published=1, modResource.deleted=0, modResource.isfolder=0
                        0.0000648: Sorted by modResource.publishedon, DESC
                        0.0000029: Limited to 10, offset 0
                        0.0003040: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties` FROM `jcvd_site_content` AS `modResource` WHERE  ( `modResource`.`id` IN (53,56,63,65,81,1,76,11,12,13) AND `modResource`.`parent` IN (1,6,7,8,9,10,5,4,40,2,41,3,44,46,47,11,12,43,13,35,69,15,14,16,82,17,18,19,20,24,50,56,74,59,60,76,79,84,87,73,80,78,66,86,81,83,21,22,23,45,49,72,85,25,26,27,28,62,71,70,75,64,67,77,29,30,31,32,33,68,38,53,61,37,39,42,57,63,58,65,34,36,51,52,54,55,48) AND `modResource`.`parent` NOT IN (2,3,4,5) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`isfolder` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 10 "
                        0.0007401: SQL executed
                        0.0001121: Total rows: 6
                        0.0000491: Rows fetched
                        0.0010729: Loaded chunk "tpl.search"
                        0.0073171: Returning processed chunks
                        0.0104201: Total time
                        25 952 256: Memory usage
                        1. Александр Мальцев # 0
                          Да, действительно.
                          Тогда попробуй:
                          1. Изменить значение &tplWrapper или переместить его в чанк:
                          &tplWrapper=`@INLINE [[+output]]`
                          
                          2. Если не поможет, тогда надо смотреть чанк tpl.search. Что-то там не так…

                          Ещё можно удалить параметр &tpl=`tpl.search`. В этом случае он должен вывести данные (массивы) на экран.
                          1. Алексей # 0
                            1. Пробовал и так и так.
                            2. tpl.search довольно прост)
                            <div class="entry">
                                <h2><a href="[[++site_url]][[+uri]]">[[+longtitle:empty=`[[+pagetitle]]`]]</a></h2>
                                   [[+description]]
                                <div class="button"><a href="[[++site_url]][[+uri]]">Читать дальше</a></div>
                            </div>
                            <br />
                            Сам поиск то работает. 10 статей как положено выводятся. А вот пагинации самой почему-то нет. Хотя на странице, где выводятся статьи по хештегу, пагинация есть)

                            Удалял &tpl=`tpl.search`, массивы выводятся. Узрел в них вот это
                            [pageNavVar] => page.nav
                                [pageCountVar] => pageCount
                                [pageLinkScheme] => 
                                [tplPage] => @INLINE <li><a href="[[+href]]">[[+pageNo]]</a></li>
                                [tplPageWrapper] => @INLINE <div class="pagination"><ul class="pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>
                                [tplPageActive] => @INLINE <li class="active"><a href="[[+href]]">[[+pageNo]]</a></li>
                                [tplPageFirst] => @INLINE <li class="control"><a href="[[+href]]">[[%pdopage_first]]</a></li>
                                [tplPageLast] => @INLINE <li class="control"><a href="[[+href]]">[[%pdopage_last]]</a></li>
                                [tplPagePrev] => @INLINE <li class="control"><a href="[[+href]]">«</a></li>
                                [tplPageNext] => @INLINE <li class="control"><a href="[[+href]]">»</a></li>
                                [tplPageSkip] => @INLINE <li class="disabled"><span>...</span></li>
                                [tplPageFirstEmpty] => @INLINE <li class="disabled"><span>[[%pdopage_first]]</span></li>
                                [tplPageLastEmpty] => @INLINE <li class="disabled"><span>[[%pdopage_last]]</span></li>
                                [tplPagePrevEmpty] => @INLINE <li class="disabled"><span>«</span></li>
                                [tplPageNextEmpty] => @INLINE <li class="disabled"><span>»</span></li>
                            Всем кодом, думаю, грузить тебя смысла нет?) Или подскажи как анализировать эти массивы)
                          2. Александр Мальцев # 0
                            А как же она у тебя появится?
                            У тебя найдено 6 записей. А ты их выводишь по 10.
                            Установи лимит, например 3 и проверь:
                            &limit=`3`
                            
                            1. Алексей # 0
                              Я чего-то не понимаю в этой жизни) Как ты узнал, что записей 6?)
                              С лимитом 3, всё работает.
                              Тогда не пойму, как вообще работает поиск, в заголовке он ищет слово или по всему тексту) Почему записей всего 6, если
                              Результаты поиска по запросу: похудеть (39)
                              mse.total получается выдаёт 39.
                              1. Александр Мальцев # 0
                                У тебя же в логе говорится что выбрано 6 записей (Total rows: 6).
                                Попробуй не использовать @INLINE и вынеси код в чанк:
                                &tplWrapper=`mychank.tpl`
                                
                                В чанке mychank.tpl:
                                <h2>Результаты поиска по запросу: [[+mse.query]] ([[+mse.total]])</h2> 
                                [[+mse.total:isnot=`0`:and:isnot=``:then=`[[+output]]`]]
                                
                                1. Алексей # 0
                                  Понял. Буду знать)
                                  Я так пробовал) Тоже 39 выдаёт и 6 записей) С другими запросами так же, mse.total в разы больше, чем записей)
                                  Я теперь не могу понять механизм поиска) Он же как яндекс по всему тексту ищет?)
                                  Может поэтому и получается так, что искомое слово встречается больше раз, чем количество статей?) По несколько раз в каждой статье. И отсюда mse.total в разы больше.
                                  1. Александр Мальцев # 0
                                    Так не должно.
                                    Попробуй в pdoPage добавить параметр totalVar:
                                    &totalVar=`searchTotal`
                                    
                                    А в параметре tplWrapper вместо [[+mse.total]] использовать
                                    [[+searchTotal]].
                                    1. Алексей # 0
                                      Шеф, ты как всегда на уровне) Очередная благодарность тебе)
                                      Можешь пояснить, почему при mse.total была такая цифра?
                                      1. Александр Мальцев # 0
                                        Такое ощущение, что mSearch не понимает твои минусы при выборке и выдаёт 39. А потом уже pdoResources исключает из выборки те ресурсы, которые расположены в разделах 2, 3, 4, 5. Но от этого значение mse.total не меняется, т.к. оно было получено ранее в mSearch.
                                        Попробуй на странице вызвать данный сниппет отдельно и посмотри что он выдаст:
                                        [[!mSearch? &parents=`-2,-3,-4,-5` &showHidden=`1` &hideContainers=`1` &returnIds=`1`]]
                                        
                                        Тогда уже можно будет судить о результатах.
                                        1. Алексей # 0
                                          Сей код по поиску «похудеть» выдал мне вот это
                                          53,56,63,65,81,1,76,11,12,13
                                          1 это ресурс главной страницы в виде блога.
                                          11, 12, 13 это разделы с тикетами.
                                          Остальные сами тикеты, как раз 6 штук)
                                          1. Александр Мальцев # 0
                                            Это уже больше 6. А сколько ресурсов в разделах 11, 12 и 13?
                                            1. Алексей # 0
                                              В разделе 11 — 3 ресурса, в 12 — 2, в 13 — 2. Причём в каждом из этих ресурсов в названии есть слово «похудеть». Но они в результатах поиска не выводятся.
                                              Вообще не понимаю как поиск работает) 6 ресурсов по поиску «похудеть» реально мало)
                                            2. Александр Мальцев # 0
                                              Надо, разбираться… что в каких разделах расположено и что исключается из результата.
                                              Попробуй поставить &parents=`0` и посмотри на результат. А дальше анализируй. Должно всё выводиться OK.
                                              1. Алексей # 0
                                                С &parents=`0` результат тоже 6. Вообще не могу понять, как он работает. Почему нет ресурсов, которые в разделах 11, 12, 13…
                    2. Александр # +1
                      А какую версию mSearch вы используете и где её можно взять?
                      1. Александр Мальцев # 0
                        mSearch2. Раньше можно было взять с github, сейчас только в магазине modstore.pro/packages/ecommerce/msearch2
                      2. Verteletsky # 0
                        Данный урок с версией mSearch сильно отличается от mSearch2?
                        1. Александр Мальцев # 0
                          Да, немного отличается в использовании.

                        Вы должны авторизоваться, чтобы оставлять комментарии.