Перейти к содержанию
lubov17

сортировка в производителе, категориях, подкатегориях опенкарт 2

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

все,сдаюсь

весь форум перерыла, опенкарт версия 2031

в категории добилась результата вывода новых товаров в начало с помощью кода

 

catalog/controller/product/category.php

код

		if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'p.sort_order';
		}

		if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'ASC';
		} 

заменить на

		if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'p.date_added';
		}

		if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'DESC';
		}

НО, это не то что мне хотелось. 
Ребята, как сделать так, чтобы в категориях,подкатегориях, производителе  в конце выводились товары с нулевым остатком, а не в перемешку.

 

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


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

 

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


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

Сортируйте по количеству по умолчанию

p.quantity

вместо

p.date_added

и будет вам щастье :)

  • +1 1

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


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

А зачем дублировать тему?

Одно и тоже ж....

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


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

ответа там не увидела, который нужно мне

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


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

Fedka, модули хорошо, но я хочу в коде подправить

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


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

пробовала много кодов, спасибо этой теме нашла еще один вариант и сработало!!!!ура)))

 

catalog\model\catalog\product.php  

		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'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} 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 (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";	
		}

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


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

Расшифровую это:

Скрытый текст

<file path="catalog/model/catalog/product.php">
		<operation>
        <search><![CDATA[$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";]]></search>
        <add position="replace"><![CDATA[$sql .= " ORDER BY (p.quantity>0) DESC, LCASE(" . $data['sort'] . ")";]]></add>
        </operation>
	    <operation>
        <search><![CDATA[} elseif ($data['sort'] == 'p.price') {]]></search>
        <add position="replace"><![CDATA[} elseif ($data['sort'] == 'p.price') {]]></add>
        </operation>
		<operation>
        <search><![CDATA[$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";]]></search>
        <add position="replace"><![CDATA[$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)";]]></add>
        </operation>
        <operation>
        <search><![CDATA[$sql .= " ORDER BY " . $data['sort'];]]></search>
        <add position="replace"><![CDATA[$sql .= " ORDER BY (p.quantity>0) DESC," . $data['sort'];]]></add>
        </operation>
        <operation>
        <search><![CDATA[$sql .= " ORDER BY p.sort_order";]]></search>
        <add position="replace"><![CDATA[$sql .= " ORDER BY (p.quantity>0) DESC, p.sort_order";]]></add>
        </operation>
  </file>

 

Открываем файл: catalog/model/catalog/product.php

Ищем: 

$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";

Заменяем на:

$sql .= " ORDER BY (p.quantity>0) DESC, LCASE(" . $data['sort'] . ")";

Ищем:

} elseif ($data['sort'] == 'p.price') {

Заменяем на:

} elseif ($data['sort'] == 'p.price') {

Ищем:

$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";

Заменяем на:

$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)";

Ищем:

$sql .= " ORDER BY " . $data['sort'];

Заменяем на:

$sql .= " ORDER BY (p.quantity>0) DESC," . $data['sort'];

Ищем:

$sql .= " ORDER BY p.sort_order";

Заменяем на:

$sql .= " ORDER BY (p.quantity>0) DESC, p.sort_order";

 

 

Если так проще, чем залить файл в папку system. Затем перейти в админку, Дополнения->Менеджер дополнений и нажать кнопку обновить...

 

То да, наверное...

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.