Всем дорогого времени суток!
Я столкнулся с такой проблемой, что, находясь в каталоге, клиент выбирает нужный ему товар, затем заходит в карточку товара и тут он видит, что его уже НЕТ в наличии! Получается очень не удобно. Нужно сделать так, чтобы в самой категории уже было видно какой товар есть, а какого нет в наличии, и который под заказ.
Погуглил вот : http://www.unemployed.in.ua/redaktirovanie-opencart-nalichie-tovara-v-2/
Результат по проделанной инструкции:
изменился цвет наличия товара в карточке, а в категории ничего не появилось.
Вариантов не много либо я что-то напортачил, или код нужно править.
Дополнительная информация:
- ocStore Версия 1.5.5.1.2
- без доп. модулей
- внесенные изменения в код
Для того чтобы товар которого нет в наличии был в конце списка, нам нужно поменять сортировку по умолчанию.
Открываем 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';
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Для начала добавим в языковой файл наши три статуса. Открываем: /catalog/language/russian/product/product.php
Находим строки:
$_['text_stock'] = 'Наличие:'; $_['text_instock'] = 'В наличии';
и добавляем:
$_['text_outstock'] = 'Нет в наличии'; $_['text_minstock'] = 'Заканчивается';
Теперь, если вы захотите поменять надпись «Заканчивается», на «Остался последний!» вам надо всего лишь зайти в языковой файл и заменить нужную строку.
Основные изменения:Начинаем самый сложный процесс Работаем с контроллером категории. Открываем для редактирования: /catalog/controller/product/category.php
Почти в самом верху подтягиваем наш языковой файл. После строк:
<?php class ControllerProductCategory extends Controller { public function index() { $this->language->load('product/category');
Вставляем:
$this->language->load('product/product');
Где-то в районе 240-250 строк после строки:
$rating = false; }
вставляем этот код:
if ($result['quantity'] <= 0) { $stock = $this->language->get('text_outstock'); } elseif ($this->config->get('config_stock_display')) { $stock = $result['quantity']; } elseif ($result['quantity'] >= 1 AND $result['quantity'] <= 3) { $stock = $this->language->get('text_minstock'); } else { $stock = $this->language->get('text_instock'); }
и последний штрих, где-то в районе 270 строки, между строк:
'thumb' => $image, 'name' => $result['name'], 'description' => utf8_truncate(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 200, ' …', true), 'price' => $price,
вставляем строку:
'stock' => $stock,
Вывод результата в списке товара:И непосредственно сам вывод нужной информации на сайте. Открываем: /catalog/view/theme/ваша_тема/template/product/category.tpl
Я предлагаю разместить информацию о наличии сразу под ценой. Для этого, находим строки:
<div class="price"> <?php if (!$product['special']) { ?> <?php echo $product['price']; ?> <?php } else { ?> <span class="price-old"><?php echo $product['price']; ?></span> <span class="price-new"><?php echo $product['special']; ?></span> <?php } ?> <?php if ($product['tax']) { ?> <br /> <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span> <?php } ?> </div>
и перед последним /div вставляем:
<br /><?php echo $product['stock']; ?>
Делаем красиво:А тем кто хотят, чтоб это было ещё и красиво, можем назначить уникальный стиль для надписей.
В последнее наше изменение, вставляем не просто строчку
<br /><?php echo $product['stock']; ?>
а вот такую:
<span class="stock"><br /><?php echo $product['stock']; ?></span>
Заходим в: /catalog/view/theme/ваша_тема/stylesheet/stylesheet.css
Находим строчку:
.product-list .price-tax { font-size: 12px; font-weight: normal; color: #BBBBBB; }
и вставляем после неё:
.product-list .stock { font-size: 13px; font-weight: normal; }
или подгоняем под свой стиль.
А вот чтоб надписи были разного цвета, возвращаемся в наш языковой файл: /catalog/language/russian/product/product.php
и уже известные нам строки
$_['text_stock'] = 'Наличие:'; $_['text_instock'] = 'В наличии'; $_['text_outstock'] = 'Нет в наличии'; $_['text_minstock'] = 'Заканчивается';
меняем на что-то типа такого:
$_['text_stock'] = 'Наличие:'; $_['text_instock'] = '<font style="color: green;"><b>В наличии</b></font>'; $_['text_outstock'] = '<font style="color: #f00;">Нет в наличии</font>'; $_['text_minstock'] = '<font style="color: green;">Заканчивается</font>';
Подробнее:http://www.unemployed.in.ua/redaktirovanie-opencart-nalichie-tovara-v-2/ Поиск, Акции, и Производители…По выше изложенной схеме исправим ещё парочку файлов, чтобы наличие товара отображалось и в поиске и в списке производителя и в акциях.
В каталоге /catalog/controller/product/ меняем файлы: manufacturer.php — Список товаров определенного производителя search.php — Поиск. Список найденных товаров special.php — Специальные акционные предложения
изменения вносим такие же как в category.php (Основные изменения) Думаю, разберетесь.
Вновь заходим в папку: /catalog/view/theme/ваша_тема/template/product/ И добавляем уже известную нам строку:
<span class="stock"><br /><?php echo $product['stock']; ?></span>
в файлы: manufacturer_info.tpl search.tpl special.tpl
P.S. У меня почему-то только в списке по производителю, выдаёт не результат, а наш полуготовый instock/outstock… попробую разобраться… Подробнее:http://www.unemployed.in.ua/redaktirovanie-opencart-nalichie-tovara-v-2/