Простой поиск по каталогу товаров
Этот способ подходит как для ресурсов MODX так и для товаров в отдельной таблице. Описание как это сделано на Демо-сайте.
Демо: http://demo.modx-shopkeeper.ru/poisk.html?f_pagetitle[like]=acer
- Делаем такую форму:
<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`]]
Этот сниппет после сабмита формы будет выводить строку, которую вы ввели в поле.
- Добавляем в админке сниппет "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;
- Создаем чанк "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".
- В контент страницы "Поиск" добавляем вызов чанка:
[[$page_search_results]]
- Для работы необходим компонент TagManager2 2.2.0-rc2+.
Если у вас 2.2.0-rc1, обновить эти 3 файла:
https://bitbucket.org/andchir/tagmanager2/src/b6eeb4cbc32033bdf8e2c7e29f98e550142f35ec/core/components/tag_manager2/model/?at=default