К основному контенту

Товар которого нет в наличии делаем в конце opencart

Товар которого нет в наличии делаем в конце 

Делаем, товар которого нет в наличии в конце списка при просмотре в категориях. На основе этого можете сделать отображение в поиске, в производителях и т.д

Для того чтобы товар которого нет в наличии был в конце списка, нам нужно поменять сортировку по умолчанию. Я отталкивался от значения "количество" и делал сортировку по этому полю.
Открываем catalog/controller/product/category.php
Ищем строки и делаем как ниже указано:
if (isset($this->request->get['sort'])) {
 $sort = $this->request->get['sort'];
} else {
 //$sort = 'p.sort_order';
 $sort = 'p.quantity';
}

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

После этих изменений товар будет сортироваться по полю количество по убыванию, самое меньшее в конце.

Так же можно сменить или спрятать кнопку "Купить", но это позже опишу.

Комментарии

  1. а как сделать не сортировку по кол-ву, а при значении товара 0 он попадает в конец списка ?

    ОтветитьУдалить
  2. Спасибо большое! Как раз искал

    ОтветитьУдалить
  3. приведенное решение некорректно, совершенно не решает поставленной задачи.
    для сортировки по наличию товара, не количеству реализовал вот так в файле model/catalog/product.php в функции getProducts
    добавил переменную в запрос
    $sql = "SELECT SQL_CALC_FOUND_ROWS p.product_id, p.quantity>0 as remain, .....

    ...........

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

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


      $sql .= " ORDER BY " . $data['sort'];
      } else {
      $sql .= " ORDER BY pd.name";
      }

      Удалить
    2. Спасибо огромное!!! ТО, что доктор прописал
      + 100 к карме

      Удалить
  4. Народ, HELP ME Ерунда вышла с магазином. Прошло полгода и только сейчас заметил, что если количество товара заканчивается - товар полностью пропадает с магазина и даже переходя по прямой ссылке "Товар не найден". Что делать? Где искать проблему? На форумах не нашел никакой инфы. По пути catalog/model/catalog/ ковырялся в product.php Но ничего не получилось Кто-нибудь может подсказать решение?

    ОтветитьУдалить
  5. Народ, HELP ME

    Ерунда вышла с магазином. Прошло полгода и только сйчас заметил, что если количество товара заканчивается - товар полностью пропадает с магазина и даже переходя по прямой ссылке "Товар не найден".

    Что делать? Где искать проблему? На форумах не нашел никакой инфы.
    По пути catalog/model/catalog/ ковырялся в product.php
    Но ничего не получилось

    Кто-нибудь может подсказать решение?

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Как заменить “сломанное” изображение?

Как заменить “сломанное” изображение? Случается так, что на странице по различного рода причинам могут не загрузиться те или иные изображения. Это негативно сказывается на восприятии контента. Средствами JavaScript мы можем заменить такие изображения, какими-то заглушками. Напишем функцию обработчик события  onError : function imgError(image) { image.onerror = ""; image.src = "/images/noimage.gif"; return true; } Воспользуемся нашей функцией, указав её в атрибуте onerror элементов img. <img src="image.png" onerror="imgError(this);"/> Или вариант без использования целой функции: <img src="image.png" onError="this.onerror=null;this.src='/images/noimage.gif';" />

Редактирование заказа opencart 1.5.1.3 часть 2

Редактирование заказа opencart 1.5.1.3 часть 2 Как и обещал по поводу доработок , сегодня добавил редактирование колличества в заказе, сумма при этом пересчитывается автоматом , только итоговая сумма не пересчитывается .