Evgeny

Двойная сортировка товара,сначала по цене,потом по названию

Рекомендуемые сообщения

Evgeny    56

Подскажите как реализовать двойную сортировку товара,сначала по цене,потом по названию.

ocStore v1.5.1.3

Заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Evgeny    56

Может не понятно написал?

Нужно,что бы товары в магазине выводились по УМОЛЧАНИЮ с двойной сортировкой: сначала по цене,потом по названию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 418

catalog/model/catalog/product.php, 135 заменить на

$sql .= " ORDER BY p.price, pd.name";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Evgeny    56

Благодарю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Evgeny    56

Попробовал,не работает...

systemcache чистил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Evgeny    56

$sql .= " ORDER BY p.price, pd.name";
Еще есть варианты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 418

Еще есть варианты?

в том же файле блок с 128 строки по 141 заменить следующим

			$sortOrder= " ASC ";
			if (isset($data['order']) && ($data['order'] == 'DESC')) {
				$sortOrder= " DESC ";
			}
			$sql .= " ORDER BY p.price" . $sortOrder . ", LCASE(pd.name)";
но так же в tpl файлах нужно убрать лишние значения "Сортировать по:"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Evgeny    56

Видимо не судьба....


Parse error: syntax error, unexpected T_RETURN, expecting T_FUNCTION in Z:homelocalhostwww555vqmodvqcachevq2-catalog_model_catalog_product.php on line 158

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Yoda    444

Вот только что проверял работает такой вот вариант

Вот в этом месте в catalog/model/catalog/product.php вставляешь

вот это

$sql .= " ORDER BY p.price, pd.name";

   if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
    if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
	 $sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
    } else {
	 $sql .= " ORDER BY " . $data['sort'];
    }
   } else {
    $sql .= " ORDER BY p.sort_order";
   }

Получается вот так

   if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
    if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
	 $sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
    } else {
	 $sql .= " ORDER BY " . $data['sort'];
    }
   } else {
   $sql .= " ORDER BY p.price, pd.name"; 
   }

И сортировка в работе!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 418

Вот только что проверял работает такой вот вариант

Вот в этом месте в catalog/model/catalog/product.php вставляешь

вот это

$sql .= " ORDER BY p.price, pd.name";

   if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
	if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
	 $sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
	} else {
	 $sql .= " ORDER BY " . $data['sort'];
	}
   } else {
	$sql .= " ORDER BY p.sort_order";
   }

Получается вот так

   if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
	if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
	 $sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
	} else {
	 $sql .= " ORDER BY " . $data['sort'];
	}
   } else {
   $sql .= " ORDER BY p.price, pd.name";
   }

И сортировка в работе!

твой 3й бредовый ответ на моей памяти..

ты специально даешь советы которые не работают??

во-первых, в 3м посте я именно это и советовал, но это не работает потому как вот это условие выполняется

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
и вот сюда не заходит

} else {	$sql .= " ORDER BY p.price, pd.name";	}

во-вторых, правильный рабочий ответ в сообщении #7, но у Evgeny стоит vqmod , который конфликтует с моим решением

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Yoda    444

Вот жеж банный лист, был бы я такой противный как и ты, я бы тебе бесконечно доказывал что ты тупой, и слал бы пачками работающие решения.. А так как я хороший. ТО О ДА ВЕЛИКИЙ ФРИЛАНСЕР ТЫ ПРАВ!!!

ТЫ КРУТОЙ ПРОГРАММЕР, ГУРУ!!! МОЖНО Я У ТЕБЯ БУДУ СОВЕТЫ СПРАШИВАТЬ ЧТО И КАМУ МНЕ ПИСАТЬ ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Yoda    444

во-вторых, правильный рабочий ответ в сообщении #7, но у Evgeny стоит vqmod , который конфликтует с моим решением

Вот жеж, зашевелился пацанчик, первый раз в жизнии дал правильное решение. Молодец Валерчик, держи пять, и в следующий раз всегда также оперативно помогай людям, а не брызжи слюной про бред!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Evgeny    56

Народ хватит ругаться :-)

Подскажите лучше как обойти vqmod

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
monax    178

А зачем его обходить? Сделайте эти правки через вкумод и наслаждайтесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Evgeny    56

Сделайте эти правки через вкумод и наслаждайтесь.

Подскажите?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
monax    178

Подсказал бы, но сейчас шибко занят. Там нет ничего сложного. Почитайте здесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Evgeny    56

в том же файле блок с 128 строки по 141 заменить следующим

			$sortOrder= " ASC ";
			if (isset($data['order']) && ($data['order'] == 'DESC')) {
				$sortOrder= " DESC ";
			}
			$sql .= " ORDER BY p.price" . $sortOrder . ", LCASE(pd.name)";
Решил вернуться к данному вопросу.

Удалил весь vqmod и теперь получилась другая ошибка:

Parse error: syntax error, unexpected T_RETURN, expecting T_FUNCTION in Z:homelocalhostwww555catalogmodelcatalogproduct.php on line 158

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
rapita    0

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY p.quantity != 0 DESC, LCASE(" . $data['sort'] . ")";
} elseif ($data['sort'] == 'p.price') {
$sql .= " ORDER BY p.quantity != 0 DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
} else {
$sql .= " ORDER BY p.quantity != 0 DESC, " . $data['sort'];
}
} else {
$sql .= " ORDER BY p.quantity != 0 DESC, p.sort_order"; 
}

if (isset($data['order']) && ($data['order'] == 'DESC')) {
$sql .= " DESC";
} else {
$sql .= " ASC";
}
в метод getProducts в конце, добавил p.quantity != 0 DESC,

таким образом товары которых количество 0, всегда в конце

сори что не множко не по теме ;) надеюсь кому то это поможет.

Изменено пользователем rapita

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу