Простой поиск по каталогу товаров

Этот способ подходит как для ресурсов MODX так и для товаров в отдельной таблице. Описание как это сделано на Демо-сайте.

Демо: http://demo.modx-shopkeeper.ru/poisk.html?f_pagetitle[like]=acer

  1. Делаем такую форму:
<form action="[[~11]]" method="get" role="search">
    <div class="form-search">
        <input type="search" name="f_pagetitle[like]" class="form-control search-query" value="[[!getRequest?paramName=`f_pagetitle.like`]]">
    </div>
</form>

Внимание на сниппет:

[[!getRequest?paramName=`f_pagetitle.like`]]

Этот сниппет после сабмита формы будет выводить строку, которую вы ввели в поле.

  1. Добавляем в админке сниппет "getRequest" с таким кодом:
<?php
/*
Example:
<input type="search" name="f_pagetitle[like]" value="[[!getRequest?paramName=`f_pagetitle.like`]]">
*/

$output = '';
$paramName = $modx->getOption( 'paramName', $scriptProperties, '' );
$requestType = $modx->getOption( 'requestType', $scriptProperties, 'get' );

$requestData = $requestType == 'post' ? $_POST : $_GET;

if( strpos( $paramName, '.' ) !== false ){
    
    $pn = explode( '.', $paramName );
    if( count( $pn ) >= 2
       && isset( $requestData[ $pn[0] ] )
       && isset( $requestData[ $pn[0] ][ $pn[1] ] )
       && !is_array( $requestData[ $pn[0] ][ $pn[1] ] ) ){
        
        $output = trim( $requestData[ $pn[0] ][ $pn[1] ] );
    }
}
else {
    if( isset( $requestData[ $paramName ] )
       && !is_array( $requestData[ $paramName ] ) ){
        $output = trim( $requestData[ $paramName ] );
    }
}
$output = $modx->stripTags( $output );
$output = $modx->sanitizeString( $output );

return $output;
  1. Создаем чанк "page_search_results" с таким кодом:
<div class="row">
    [[!tmCatalog?
    &tpl_list=``
    &tpl=`product_list`
    &guardKey=``
    &parents=`2`
    &depth=`2`
    &noResults=`По вашему запросу ничего не найдено.`
    ]]
    <div class="clearfix"></div>
</div>

<ul class="pagination">
    [[!+page.nav]]
</ul>

Сниппет "tmCatalog" должен быть настроен заранее по документации компонента "TagManager2".

  1. В контент страницы "Поиск" добавляем вызов чанка:
[[$page_search_results]]
  1. Для работы необходим компонент TagManager2 2.2.0-rc2+.

Если у вас 2.2.0-rc1, обновить эти 3 файла:
https://bitbucket.org/andchir/tagmanager2/src/b6eeb4cbc32033bdf8e2c7e29f98e550142f35ec/core/components/tag_manager2/model/?at=default