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

[Решено] Проданные товары в конце списка


Palladin

Recommended Posts

Здравствуйте. Как сделать так чтобы товары имеющие статус "Нет на складе" проваливались в разделе и показывались самыми последними, иными словами чтобы при просмотре пользователем каталога магазина вначале он бы видел товар "В наличии", а уже потом все остальные, а то у меня вот так получается:(

http://shop.erolife.by/Kupalniki

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


Да ладно!? Неужели никто не знает как?

Или вариант такой: те, кто знает понимают, сколько это работы и не хотят бесплатно говорить :)

А вообще, на самом деле, это либо правка пары моделей и колдовство с лишними SQL-запросами и лишним скрытым полем для сортировки, либо написание модуля, либо перекраивание части магазина.

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


  • 4 weeks later...
  • 1 month later...

Я решил проблему так:

В свойствах товара, которого нет на складе, на вкладке "Данные" есть поле "Порядок сортировки:" по умолчанию там стоит единица, ну дак если вписывать в те товары, что вышли со склада двойку, то товары, которые закончились будут отображаться последними в списке:)

P.S. топорный метод, мб ктонить сделает это автоматической функцией?

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


  • 4 months later...

Ребят! Неужели нельзя сделать чтоб менялся статус у проданных товаров на "отключено" или отодвигать их в конец списка? А то на главной висят товары которых нет в наличии, не порядок. Подскажите пожалуйста как решается задача?

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


так есть же мод, который превращает кнопку для заказа в неактивную.

и пользуйтесь иногда интернетом, а не ждите помощи...

тут написано как сделать сортировку по Производителю

а потом в catalog/controller/product/category.php изменить $sort = 'p.sort_order'; изменить на p.quantity

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

Спасибо попробую. Но я действительно перерыл весь интернет, даже англоязычный, чтоб найти решение, но подходящего не встечал. Модуль чтоб сделать кнопку "купить" неактивной у меня стоит, их есть даже несколько разных, и платные и бесплатные. А вот сортировку по количеству где-то находил, но мне не помогло, наверное решение было для другой версии, у меня 1.5.2.1. Сейчас попробую метод который Вы посоветовали и отпишусь. А нет ли способа сделать чтоб товар которого нет в наличии снимался с витрины? Например меняя статус товара на "отключено". У меня раньше в магазине на Virtuemart эта функция была по умолчанию, так сказать из коробки, и для меня удивительно что в OpenCart этого нет, ведь проданный товар редко появляется в наличии еще раз, меняются модели, ассортимент обновляется.

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


Так вот и этот способ у меня не сработал. Очень жаль. Ранее пробовал этим способом. В обоих случаях у меня просто не грузится сайт, белая страница, в логах ошибок нет. Как адаптировать это решение под версию 1.5.2.1 ?

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


  • 5 months later...

В файле catalog\model\catalog\product.php найдите строки (примерно 160 строка)

   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)) {
	$sort = $data['sort'];
   } else {
	$sort = 'p.sort_order';
   }
   $append_order = 'p.price = 0, p.quantity = 0,';
   if ($sort == 'pd.name' || $sort == 'p.model') {
	$sql .= " ORDER BY $append_order LCASE($sort)";
   } else {
	$sql .= " ORDER BY $append_order $sort";
   }
  • +1 3
Надіслати
Поділитися на інших сайтах


В файле catalogmodelcatalogproduct.php найдите строки (примерно 160 строка)

   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)) {
	$sort = $data['sort'];
   } else {
	$sort = 'p.sort_order';
   }
   $append_order = 'p.price = 0, p.quantity = 0,';
   if ($sort == 'pd.name' || $sort == 'p.model') {
	$sql .= " ORDER BY $append_order LCASE($sort)";
   } else {
	$sql .= " ORDER BY $append_order $sort";
   }

на версии 3.1 не работает(

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


  • 6 months later...
  • 2 months later...
  • 2 years later...

А как решить такую проблему, при такой изменении, на первой странице становиться сортировка по количеству на второй и далее уже становиться по названию, в чем может быть дело?

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


  • 4 months later...

В файле catalog\model\catalog\product.php найдите строки (примерно 160 строка)

 

   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)) {
	$sort = $data['sort'];
   } else {
	$sort = 'p.sort_order';
   }
   $append_order = 'p.price = 0, p.quantity = 0,';
   if ($sort == 'pd.name' || $sort == 'p.model') {
	$sql .= " ORDER BY $append_order LCASE($sort)";
   } else {
	$sql .= " ORDER BY $append_order $sort";
   }

Спасибо, заработало, ocstore 1.5.5.1.2

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


  • 5 months later...
  • 3 months later...
  • 2 months later...
  • 1 year later...
  • 1 year later...
В 18.09.2012 в 10:46, dimmaq сказав:

В файле catalog\model\catalog\product.php найдите строки (примерно 160 строка)

 


   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)) {
	$sort = $data['sort'];
   } else {
	$sort = 'p.sort_order';
   }
   $append_order = 'p.price = 0, p.quantity = 0,';
   if ($sort == 'pd.name' || $sort == 'p.model') {
	$sql .= " ORDER BY $append_order LCASE($sort)";
   } else {
	$sql .= " ORDER BY $append_order $sort";
   }

получаю ошибку
https://prnt.sc/sbekwt

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


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

×
×
  • Створити...

Important Information

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