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

Товар которого нет в наличии делаем в конце 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
    Но ничего не получилось

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

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

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

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

Принудительный вывод 404 или редирект на 404 Opencart

Допустим, при каком то условии Вам нужно вывести 404 страницу в Opencart, для это используете такой код в контроллере: //отправляем заголовок 404 $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 404 Not Found'); //перенаправляем на страницу 404  return $this->forward('error/not_found');

Подсветка статусов заказа в opencart

Подсветка статусов заказа в opencart