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


  • Администраторы

    Этот способ подходит как для ресурсов 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



  • А на демо сайте tmCatalog уже настроен по документации компонента "TagManager2"?

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



  • Добрый день, не срабатывает поиск, пишет постоянно что "По вашему запросу ничего не найдено.",
    за основу взял демо-версию с вашего сайта
    сначала заменил 3 файла на более новую версию, не помогло, потом обновил TagManager2 до версии 2.3-pl и все равно не помогло, сделал исключительно как на примерах, ошибок в логах нету, в чем может быть распространенная ошибка?
    Спасибо заранее


  • Администраторы

    @atrox

    не срабатывает поиск, пишет постоянно что "По вашему запросу ничего не найдено.",

    Создайте отдельную тему с вопросом и всеми подробностями.



  • @Andchir спасибо большое, разобрался, А можно по 2м полям сделать поиск? по название + артикул?


  • Администраторы

    @atrox

    А можно по 2м полям сделать поиск? по название + артикул?

    Можно. Добавьте ещё одно поле

    <input type="search" name="f_articul[like]" value="[[!getRequest?paramName=`f_articul.like`]]">
    


  • @Andchir А где указана страница результатов поиска?



  • В контент страницы "Поиск" добавляем вызов чанка: [[$page_search_results]].
    А где эта страница указывается??? У меня выводится только если чанк в шаблоне указать, а как указать редирект на отдельную страницу?????? Демо версия сайта не ставится Error на 26 строчке.......


  • Администраторы

    @Surf сказал Простой поиск по каталогу товаров:

    В контент страницы "Поиск" добавляем вызов чанка: [[$page_search_results]].
    А где эта страница указывается??? У меня выводится только если чанк в шаблоне указать, а как указать редирект на отдельную страницу??????

    В форме указывается.

    <form action="[[~11]]" method="get" role="search">
    

    11 - это ID страницы результатов поиска.

    Демо версия сайта не ставится Error на 26 строчке.......

    Какая версия демо-сайта? Вроде в последней версии исправлено.



  • @Andchir Заработало=) Почему у меня результат поиска оборачивается в следущие ТЭГИ <pre class="markdown-highlight"><span style="line-height: 1.5em;">Результат поиска</span></pre>


  • Администраторы

    @Surf сказал Простой поиск по каталогу товаров:

    Почему у меня результат поиска оборачивается в следущие ТЭГИ <pre class="markdown-highlight"><span style="line-height: 1.5em;">Результат поиска</span></pre>

    Проверяйте чанки.



  • Эта запись удалена!


  • @Andchir Это редактор Tinymce.....



  • А если нужен поиск по ресурсам и товарам, то как быть? у меня пока выводит только товары.



Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.