We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 22998
    • 52 Posts
    Добрый день!
    Наверно, это тема не раз поднималась, но ничего путьнего я чета так и не нашел.

    Есть ли уже написанный сниппет, с помощью которого можно было сортировать товары в интернет-магазине (например). Чтоб пользователь мог упорядочить по цене, по названию, по размеру и т.д.

    Как это реализовать? Помогите, пожалуйста.
      • 27518
      • 75 Posts
      а какой модуль интернет магазина используете?
        • 22998
        • 52 Posts
        Quote from: skmskm at Mar 10, 2011, 05:33 AM

        а какой модуль интернет магазина используете?

        Shopkeeper.
        Но я думаю сортировка ведь с Ditto связанна.
          • 23949
          • 22 Posts
          Поищите в интернете про Ditto и сортировку.
            • 22998
            • 52 Posts
            Нужно чтобы было вот как здесь, например

            http://www.vanna-ural.ru/katalog/vannyi-akrilovyie-bach.html
            Сортировать по: названию цене габаритам

            или еще лучше как здесь
            http://icase.ua/magazin/katalog/iphone/iphone4.html
            * по популярности
            * по цене

            Нажимаешь на ссылку и сортируется товар.

            Как это реализовано, кто нибудь знает?
              • 1788
              • 1,103 Posts
              Quote from: Pelya6 at Mar 11, 2011, 01:35 AM

              или еще лучше как здесь
              http://icase.ua/magazin/katalog/iphone/iphone4.html
              * по популярности
              * по цене

              Нажимаешь на ссылку и сортируется товар.

              Как это реализовано, кто нибудь знает?
              Вообще-то это реализовано в магазинах. Например addshop.
                • 7368
                • 264 Posts
                У меня реализовано так:
                1)
                
                #snippet AdvancedFilters
                
                if (isset($_GET['ditto_page_display'])) 
                	{
                		$onPage = '&ditto_page_display='.$_GET['ditto_page_display'];
                	} 
                else 
                	{
                		$onPage = '';
                	}
                if (isset($_GET['ditto_page_sortBy']) && isset($_GET['ditto_page_sortDir'])) 
                	{
                		$sortBy = '&ditto_page_sortBy='.$_GET['ditto_page_sortBy'].'&ditto_page_sortDir='.$_GET['ditto_page_sortDir'];
                	} 
                	else 
                	{
                		$sortBy = '';
                	}
                
                $f10 = $modx->makeUrl($modx->documentIdentifier,'','?ditto_page_display=10'.$sortBy);
                $f30 = $modx->makeUrl($modx->documentIdentifier,'','?ditto_page_display=30'.$sortBy);
                $f50 = $modx->makeUrl($modx->documentIdentifier,'','?ditto_page_display=50'.$sortBy);
                $f100 = $modx->makeUrl($modx->documentIdentifier,'','?ditto_page_display=100'.$sortBy);
                $sortAsc = $modx->makeUrl($modx->documentIdentifier,'',$onPage.'&ditto_page_sortBy=price&ditto_page_sortDir=ASC');
                $sortDesc = $modx->makeUrl($modx->documentIdentifier,'',$onPage.'&ditto_page_sortBy=price&ditto_page_sortDir=DESC');
                
                $onPageOutput = array($f10 =>10 ,$f30 => 30 ,$f50 => 50,$f100 => 100);
                $output = 'Показать на странице: ';
                foreach($onPageOutput as $key => $value)
                {
                $output .= "<a href='$key'>$value</a> / ";
                }
                $output .= "Отфильтровать по: Цене ( <a href='$sortAsc'>возрастание</a> / <a href='$sortDesc'>убывание</a> )";
                return $output;
                ?>


                2) На странице каталога
                [!Ditto? &id=`page` &parent=`[*id*]`  &extenders=`summary,request` &depth=`5` &paginate=`1` &tplPaginateCurrentPage=`currentPageSplitter` &tplPaginatePage=`pageSplitter`  &paginateAlwaysShowLinks=`1` &language=`russian-UTF8` &display=`10` &filter=`isfolder,1,2` &truncLen=`100` &truncText=`...` &truncOffset=`0` &tpl=`shopStuff` &noResults=` ` &showInMenuOnly=`1` &orderBy=`menuindex ASC` &ignoreHidden=`0`!]
                [!DittoPageSplit? &id=`page` &output=`1`!]


                Важно:
                1) В Ditto можно работать с GET параметрами, в формате ditto_ID_PARAMETER
                Ditto &id=`page` должно совпадать с GET параметром, например:
                ditto_page_display=20 - параметр &display - количество выводить на странице
                ditto_page_sortBy=price - параметр &sortBy - сортировать по TV параметру, или параметру документа

                2) Сниппет работает совместно с пагинацией, и написан для того, чтобы корректно обрабатывалась строка запроса, и при пагинации не сбивалось.. Сниппет написан как попало, писал очень давно, но работает так, как нужно! Пробуйте
                  • 22998
                  • 52 Posts
                  О, вроде то что нужно. Буду разбираться. Спасибо огромное
                    • 22998
                    • 52 Posts
                    Все получилось) очень замечательно прям, спасибо Kollad)

                    Помогите, еще пожалуйста, сделать так чтобы текущая сортировка не была ссылкой. Чтобы было понятно, как в данный момент отсортирован товар.
                      • 22998
                      • 52 Posts
                      Помогите, пожалуйста. Как сделать чтоб на текущую сортировку не было ссылки, что понятно было как отсортировано. а?