Ruslan Brest, rb.labtodo.com
Backend web-developer: CodeIgniter, PHP, MySQL, OpenCart, PrestaShop, MaxSite CMS

Opencart 1.5.1: вывод информации о наличии под картинкой в каталоге товаров

Просмотров: 15160 22
Howto » OpenCart

В ответ на

http://rb.labtodo.com/page/izmenjaem-dlinu-opisanij-tovarov-v-kataloge-opencart-1505#comment-281
Подскажите пожалуйста как сделать для opencart 1.5.1 чтоб в категории в описании товаров под картинкой отображалось наличие товара (есть в наличии или доступен под заказ...)

Для 1.5.1.2 и 1.5.1.3 код ниже. На 1.5.1.3 не проверял - если есть отличия и не работает, сообщите.

Небольшие изменения вносились раньше, поэтому могут быть небольшие отличия между тем, что вы видите у себя, и здесь (например, thumb_w, thumb_h, cut_descr) -- не обращайте на них внимания. Вставляемый код неизменный как для 1.5.1.2, так и для 1.5.1.3, номера строк совпадают - главное найти место для вставки, а их легко идентифицировать по остальными имеющимся признакам.

diff --git a/public_html/catalog/controller/product/category.php b/public_html/catalog/controller/product/category.php
index d3ba191..3613e7c 100644
--- a/public_html/catalog/controller/product/category.php
+++ b/public_html/catalog/controller/product/category.php
@@ -1,6 +1,7 @@
 <?php
 class ControllerProductCategory extends Controller {
 	public function index() {
+		$this->language->load('product/product');
 		$this->language->load('product/category');
 
 		$this->load->model('catalog/category');
@@ -182,6 +183,15 @@ class ControllerProductCategory extends Controller {
 					$rating = false;
 				}
 
+				$stock = $this->language->get('text_stock') . ' ';
+				if ($result['quantity'] <= 0) {
+					$stock .= $result['stock_status'];
+				} elseif ($this->config->get('config_stock_display')) {
+					$stock .= $result['quantity'];
+				} else {
+					$stock .= $this->language->get('text_instock');
+				}
+
 				$cut_descr_symbols = 400;
 				$descr_plaintext = strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'));
 				if( mb_strlen($descr_plaintext, 'UTF-8') > $cut_descr_symbols )
@@ -195,6 +205,7 @@ class ControllerProductCategory extends Controller {
 					'thumb'       => $image,
 					'thumb_w'     => $this->config->get('config_image_product_width'),
 					'thumb_h'     => $this->config->get('config_image_product_height'),
+					'stock'       => $stock,
 					'name'        => $result['name'],
 					'description' => $descr_plaintext,
 					'price'       => $price,
diff --git a/public_html/catalog/view/theme/default/template/product/category.tpl b/public_html/catalog/view/theme/default/template/product/category.tpl
index 6e9054a..19680ad 100644
--- a/public_html/catalog/view/theme/default/template/product/category.tpl
+++ b/public_html/catalog/view/theme/default/template/product/category.tpl
@@ -70,7 +70,9 @@
     <?php foreach ($products as $product) { ?>
     <div>
       <?php if ($product['thumb']) { ?>
-      <div class="image"><?php if( $product['special'] ) { ?><div class="akcii-img"></div><?php } ?><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" width="<?php echo $product['thumb_w']; ?>" height="<?php echo $product['thumb_h']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
+      <div class="image"><?php if( $product['special'] ) { ?><div class="akcii-img"></div><?php } ?><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" width="<?php echo $product['thumb_w']; ?>" height="<?php echo $product['thumb_h']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a>
+      <?php echo $product['stock'];?>
+      </div>
       <?php } ?>
       <div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
       <div class="description"><?php echo $product['description']; ?></div>

Продолжение обсуждение этой и охожих тем -- на форуме: http://rb.labtodo.com/forum/topic/4/vyvod-informatsii-o-nalichii-v-kataloge-tovarov/

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru digg.com friendfeed.com liveinternet.ru livejournal.ru yandex.ru del.icio.us
Комментариев: 22
  1. Подскажите как вывести на странице каталога (под картинкой) Модель - артикул товара???

  2. 2011-12-03 в 23:56:34 | Ruslan Brest

    http://rb.labtodo.com/page/opencart-151-catalog-pokaz-sku-v-spiske-tovarov-productcategory

    Там SKU выводилось не под картинкой, насколько помню, но как переставить - думаю, сообразите.

  3. 2012-01-30 в 08:29:16 | Владимир

    Вывод информации о "наличии" под картинкой в каталоге товаров на версии opencart-1.5.1.3 не работает. Сам текст и переменные отличаются. Если не сложно посмотрите. Спасибо. Полезный сайт особенно для чайника!

  4. 2012-01-30 в 08:49:13 | Ruslan Brest

    Ок, наверное не раньше вторника. Сегодня ещё работаю, в понедельник тоже много дел предстоит.

  5. 2012-02-10 в 20:55:03 | Владимир

    С 1.5.1.3 задержка. Спасибо.

  6. 2012-02-10 в 21:49:21 | Ruslan Brest

    Пардон, очень занят сейчас, многие задачи откладываются.

    Проверил - отличий для 1.5.1.3 нет. Небольшие изменения вносились раньше, поэтому могут быть небольшие отличия между тем, что вы видите у себя, и здесь (например, thumb_w, thumb_h, cut_descr) -- не обращайте внимание на них. Вставляемый код неизменный как для 1.5.1.2, так и для 1.5.1.3, номера строк совпадают - главное найти место для вставки, а их легко идентифицировать по остальными имеющимся признакам.

  7. 2012-02-12 в 20:05:38 | Владимир

    Спасибо!

  8. 2012-02-14 в 06:22:49 | Владимир

    Спасибо! Проверил на 1.5.1.3 работает. Извини за излишнее беспокойство.

  9. 2012-03-06 в 01:09:15 | Аноним

    Полезная статья.

    Может еще подскажете как реализовать сортировку по наличию на складе (что Есть выше, чего Нет ниже)?

  10. 2012-03-07 в 06:09:50 | Ruslan Brest

    Надо добавить ещё один способ сортировки - см. например http://rb.labtodo.com/page/opencart-15x-catalog-kak-dobavit-sortirovku-po-proizvoditelju-v-kataloge-tovarov

    Всё аналогично, только сортировать Вам надо по p.quantity, а не по manufacturer_id.

    И потом изменить сортировку по умолчанию на эту новую. Это в файле catalog/controller/product/category.php, примерно 15 строка. По умолчанию там

    $sort = 'p.sort_order';

    надо будет изменить на p.quantity

  11. 2012-05-12 в 22:14:32 | Дмитрий

    Добрый день! Такой вопрос - а возможно ли сделать вывод вместо "Наличие: (кол-во)/Нет в наличии" просто "В наличии/Нет в наличии"

  12. 2012-05-13 в 00:35:29 | Ruslan Brest

    Да, конечно. Формируйте переменную $stock в контроллере так, как удобно.

  13. 2012-05-14 в 08:33:15 | Богдан

    Ой и спасибо автору! Руслан, огромный респект тебе!

    Сделал - работает чудесно!

    Скажи.. а думалось над этим, но только так чтобы еще изображение отсутствующего товара становилось темным?

    С уважением, Богдан

  14. 2012-05-14 в 20:27:47 | Ruslan Brest

    Ну, информацию о наличии можно передавать во view точно так же. А дальше лучше обратиться к верстальщикам - я не знаю, как картинки затемнять, у них это лучше получится.

  15. 2012-05-15 в 00:46:43 | Богдан

    Спасибо, за ответ.

    Мне это видется как наложение доп. слоя темного и прозрачного... без заменения картинки...

    Ладно.. Если найду ответ - отпишусь.

    И еще раз спасибо, за это улучшение.

  16. 2012-06-04 в 21:39:25 | Дмитрий

    А не подскажете, как информацию о наличии вставить в "рекомендуемые товары"? В последние и прочие вставилось без проблем, а вот в рекомендуемые увы.

  17. Надо добавить ещё один способ сортировки - см. например http://rb.labtodo.com/page/opencart-15x-catalog-kak-dobavit-sortirovku-po-proizvoditelju-v-kataloge-tovarov
    Всё аналогично, только сортировать Вам надо по p.quantity, а не по manufacturer_id.
    И потом изменить сортировку по умолчанию на эту новую. Это в файле catalog/controller/product/category.php, примерно 15 строка. По умолчанию там
    $sort = 'p.sort_order';
    надо будет изменить на p.quantity

    Добрый день. Я сделал сортировку по p.quantity - по умолчанию, но первыми показываются товары, которых сейчас нет в наличии. Подскажите, как показывать сначала товары, которые в наличии? Спасибо.

  18. Надо добавить ещё один способ сортировки - см. например http://rb.labtodo.com/page/opencart-15x-catalog-kak-dobavit-sortirovku-po-proizvoditelju-v-kataloge-tovarov
    Всё аналогично, только сортировать Вам надо по p.quantity, а не по manufacturer_id.
    И потом изменить сортировку по умолчанию на эту новую. Это в файле catalog/controller/product/category.php, примерно 15 строка. По умолчанию там
    $sort = 'p.sort_order';
    надо будет изменить на p.quantity
    Добрый день. Я сделал сортировку по p.quantity - по умолчанию, но первыми показываются товары, которых сейчас нет в наличии. Подскажите, как показывать сначала товары, которые в наличии? Спасибо.

    Решил вопрос самостоятельно, в файле catalog/controller/product/category.php заменил строку $order = 'ASC'; на $order = 'DESC';

  19. 2012-09-03 в 08:46:02 | Евгений

    Здравствуйте!

    Что-то на 1.5.2.1 не получается, где косяк? Помогите, пожалуйста.

  20. 2012-11-08 в 08:00:50 | гаррет

    А как сделать что бы в результате поиска тоже выводилось наличие/нет в наличии?

  21. Скажите как привязать этот модуль

    http://www.opencart.com/index.php?route=extension/extension/info&extension_id=11158&filter_search=stock&filter_license=0&page=2

    Что бы в зависимости от наличия был разный цвет. Спасибо!

  22. 2013-04-24 в 01:26:16 | Ruslan Brest

    Для более длинных и обширных вопросов недавно установлен форум. Продолжить обсуждение темы лучше там: http://rb.labtodo.com/forum/topic/4/vyvod-informatsii-o-nalichii-v-kataloge-tovarov/

    Здесь не очень удобно. Перенёс туда вопрос.