|
|
23.02.2017, 17:16
|
|
Нерсесов Сергей Николаевич
Зарегистрирован: 2014-06-16
Сообщений: 35
|
Не могу понять...не работает "Сортировка по полю"...в компоненте Интернет магазина...
Сортирую по системному полю Цена по убыванию...ноль изменений...и так по любому полю...что я не правильно делаю?
|
|
|
24.02.2017, 08:48
|
|
Владимир
Web-Element
Зарегистрирован: 2011-07-07
Сообщений: 64
|
Видимо у вас в системных настройках этого компонента настроена другая сортировка. Ищите сортировку там.
|
|
|
09.03.2017, 16:51
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Всем привет. Продолжу тему похожим вопросом. В компоненте с помощью системных настроек сделана возможность выборки товаров, вводятся параметры для запроса и потом товары выводятся в соответствии с выбором клиента по $query_where.
Цитата:$ignore_cc = 1;
$query_where = 'новые условия выбора';
Допустим по новым условиям выборки, отобралось 10 товаров. Если после этого отсортировать товары по полю цена, таким образом Код: if (isset($_GET['sortList'])) {
$orderPrice_query=$_GET['sortList'];
if($orderPrice_query == 'upPrice'){
$ignore_cc=1;
$query_order = "a.Price DESC";
}elseif($orderPrice_query == 'downPrice'){
$ignore_cc=1;
$query_order = "a.Price ASC";
}
}
то вся выполненная до этого выборка отменяется и показывается полный каталог товаров отсортированный по цене. Для выборки параметры собираются тоже через GET.
Подскажите плз, как так сделать, чтобы сортировка выполнялась только для результата выборки, а не по всему каталогу?
Плохо объяснил, но буду благодарен за любой комментарий.
|
|
|
16.04.2017, 14:46
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Чтобы условия сортировки в одной строке не заменялись другой строкой, вам нужно там, где стоят if'ы, не перезаписывать $query_order, а дополнять его через запятую, примерно так:
$query_order .= ", a.Price ....";
|
|
|
22.05.2017, 10:25
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Спасибо, Руслан. Но не совсем понял, если писать в таком виде $query_order .= "a.Price ASC"; то результат тот же, сортируется и выводится весь список товаров. А если добавлять запятую перед полем $query_order .= ", a.Price ASC"; то получаю ошибку синтаксиса.
|
|
|
22.05.2017, 10:40
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Виталий, тогда нужно видеть полностью весь код системных настроек компонента. Иначе непонятно, что у вас формируется до того куска кода, который вы привели.
|
|
|
22.05.2017, 13:19
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Получается так, сначала проверяем по сколько товаров на страницу выводить, потом сортировка по цене, а дальше получаем данные из формы для выбора тех или иных товаров по фильтру. Единственное что меня еще смущает, что в данном случае работают разные формы для получения данных сортировки и фильтрации и каждая делает свой submit.
Код://количество отображаемых товаров
if (isset($_GET['recList'])) {
$portion=$_GET['recList'];
$recNum = $portion==-1 ? 9999 : $portion;
}
//Сортируем по цене
if (isset($_GET['sortList'])) {
$orderPrice_query=$_GET['sortList'];
if($orderPrice_query == 'upPrice'){
$ignore_cc=1;
$query_order .= "a.Price ASC";
}elseif($orderPrice_query == 'downPrice'){
$ignore_cc=1;
$query_order .= "a.Price DESC";
}
}
//Получаем даннные для фильтра
//Средняя цена
if(isset($_GET['minCost'])){
$min = $_GET['minCost'];
}
if(isset($_GET['maxCost'])){
$max = $_GET['maxCost'];
}
if($min != 0){
$query_price = " AND "." (a.Price BETWEEN $min AND $max)";
}else{$query_price = "";}
//Тип мотоцикла
if(isset($_GET['type-moto'])){
$el = $_GET['type-moto'];
$query_bikeType = " AND ("."a.bike_type LIKE '".implode("' OR a.bike_type LIKE '",$el)."')";
}else{$query_bikeType = "";}
//Объем двигателя
if(isset($_GET['minValue'])){
$min = $_GET['minValue'];
}
if(isset($_GET['maxValue'])){
$max = $_GET['maxValue'];
}
if($min != 0){
$query_volume = " AND "." a.volume BETWEEN $min AND $max";
}else{$query_volume = "";}
$ignore_cc = 1;
$query_where = "1 $query_price $query_bikeType $query_volume";
|
|
|
22.05.2017, 13:56
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Перечитал - похоже, я не совсем верно вначале понял ваш вопрос.
Если так, то вам нужно было всего лишь убрать строчки $ignore_cc и вернуть назад $query_order:
Код://Сортируем по цене
if (isset($_GET['sortList'])) {
$orderPrice_query=$_GET['sortList'];
if($orderPrice_query == 'upPrice'){
$query_order = "a.Price ASC";
}elseif($orderPrice_query == 'downPrice'){
$query_order = "a.Price DESC";
}
}
|
|
|
22.05.2017, 14:11
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
да, так и сделал, Спасибо. Но беда похоже все-таки в том что первый результат я получаю из формы, которая передает параметры в GET для подбора товаров, а второй когда хочу отсортировать по цене, также получаю из формы но только в GET параметрах уже пропадают данные фильтра и остается только с сортировкой. В итоге страница перезагружается и сортируются и выводятся полностью все товары.
Код:<select class='sort-price' onchange="this.form.submit()" name='sortList'>
<option <?if($recList==''){ echo "selected";}?> disabled value=''>Выбрать</option>
<option <?if($sortList=='upPrice'){ echo "selected";}?> value='upPrice'>Возрастанию цены</option>
<option <?if($sortList=='downPrice'){ echo "selected";}?> value='downPrice'>Убыванию цены</option>
</select>
Это форма для сортировки. надо похоже с ней разбираться и с передачей параметров
|
|
|
22.05.2017, 14:27
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Разве после того, как вы убрали в обоих местах $ignore_cc, у вас так и показываются все товары из всех разделов каталога? Такое может быть только если где-то в системных настройках не убрано $ignore_cc и/или $ignore_sub. Бывают, конечно, и экзотические ошибки, типа неправильно сформулированного OR в query_where.
Если вы владеете SQL - попробуйте вывести в префиксе списка объектов переменную $message_select, и тогда сможете однозначно увидеть причину, почему в условия выборки попадает что-то не то.
|
|
|
22.05.2017, 16:53
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
ignore все убраны, но что-то все таки выборка дурит. Попробую проверить запрос. Еще раз спасибо.
а сам каталог с товарами вотhttp://www.mr-moto.ru/Netshop/moto/motosalon/
|