Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Evgeny

Recommended Posts

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

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

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

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

Вот в этом месте в 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"; 
   }

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

Надіслати
Поділитися на інших сайтах


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

Вот в этом месте в 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 , который конфликтует с моим решением

Надіслати
Поділитися на інших сайтах

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

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

Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах


  • 1 month later...

в том же файле блок с 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

Надіслати
Поділитися на інших сайтах


  • 3 years later...

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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.