Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Вывести наличие товара в категориях, модулях и прочих...


 Поделиться

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

Подскажите, пожалуйста, как можно вывести строку с наличием товара в категории и модули, которая отображается в карточке товара?

пример:

вот так отображается в карточке товара:

 

iH9jld.png

 

надо что бы это было и тут:

 

LQhvvt.jpg

 

сайт tutdarom.ru

Изменено пользователем Vitaly2
Ссылка на комментарий
Поделиться на других сайтах


Здесь любой доброжелатель,который захочет помочь,запросто обяжет себя  "за спасибо" ,выполнить ещё и адаптацию под шаблон/фильтр/модули шаблона.Видимо в этом и причина молчания.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

да мне не нужна адаптация.. я вижу что есть кусок кода в product.tpl который отвечает за вывод количества товара в карточке товара

<div class="stock">
        <?php if ($show_stock) { ?><span><?php echo $text_stock; ?></span> <?php echo $stock; ?><?php } ?>

</div>

 

если я его воткну в category.tpl в нужное место, то там вместо вывода остатков он выдает ошибку, которая ссылается на этот код...

как это исправить не могу понять..

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


Это начало этой истории.Если есть желание то нужно ещё править контроллеры .Для категории например category.php

 

Дальше уже сам.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Спасибо, добрый Том! ))

Пробовал так же сделать и с куском кода с product.php воткнуть в category.php... но что-то видимо не так сделал... ошибка как была так и осталась...

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


Спасибо, добрый Том! ))

Пробовал так же сделать и с куском кода с product.php воткнуть в category.php... но что-то видимо не так сделал... ошибка как была так и осталась...

 

В контроллер category.php нужно добавить не точно такой код, как в product.php

В category.php перед $data['products'][] = array( вставить

if ($result['quantity'] <= 0) {
	$data['stock'] = $result['stock_status'];
} elseif ($this->config->get('config_stock_display')) {
	$data['stock'] = $result['quantity'];
} else {
	$data['stock'] = $this->language->get('text_instock');
}

А после 'price'       => $price, добавить

'stock'	=> $data['stock'],

В файле catalog/view/theme/default/template/product/category.tpl в нужном месте вставить

<?php echo $product['stock']; ?>
  • +1 3
Ссылка на комментарий
Поделиться на других сайтах

 

В контроллер category.php нужно добавить не точно такой код, как в product.php

В category.php перед $data['products'][] = array( вставить

if ($result['quantity'] <= 0) {
	$data['stock'] = $result['stock_status'];
} elseif ($this->config->get('config_stock_display')) {
	$data['stock'] = $result['quantity'];
} else {
	$data['stock'] = $this->language->get('text_instock');
}

А после 'price'       => $price, добавить

'stock'	=> $data['stock'],

В файле catalog/view/theme/default/template/product/category.tpl в нужном месте вставить

<?php echo $product['stock']; ?>

 

 

уже пробовал так вчера...

говорит неопределенная переменная...

 

Notice: Undefined variable: product_info in /home/vidge/domains/tutdarom.ru/public_html/system/storage/modification/catalog/controller/product/category.php on line 180Notice: Undefined variable: product_info in /home/vidge/domains/tutdarom.ru/public_html/system/storage/modification/catalog/controller/product/category.php on line 181

 

180-    $data['stock'] = $result['quantity'];

181-    } else {

Изменено пользователем Vitaly2
Ссылка на комментарий
Поделиться на других сайтах


Посмотрите внимательно код.  product_info используется в контроллере карточки товара, а в контроллере категории $result. Вот этот кусок кода точно такой?

if ($result['quantity'] <= 0) {
	$data['stock'] = $result['stock_status'];
} elseif ($this->config->get('config_stock_display')) {
	$data['stock'] = $result['quantity'];
} else {
	$data['stock'] = $this->language->get('text_instock');
}
Ссылка на комментарий
Поделиться на других сайтах

Вы код вставили не в то место

Нужно внутри цикла набора массива products

И не забывайте обновлять модификаторы после каждой правки в файлах

Изменено пользователем thentru
  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


Вы код вставили не в то место

Нужно внутри цикла набора массива products

И не забывайте обновлять модификаторы после каждой правки в файлах

 

эммм.. если я этот код помещю внутрь цикла, о вообще белая пустая страница...

 

так что ли?

 

2016092015_1265678_23357724.png

 

просто пустая страница в таком случае...

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


Перед набором массива

$data['products'][] = array(
  'product_id'  => $result['product_id'],
  ...
);

вставляете вашу проверку

if ($result['quantity'] <= 0) {
  ...
}

причем в в этой проверке вам нужно записать данные в переменную, а не в массив data

$stock = $result['stock_status'];

и после эту переменную добавить в массив products

$data['products'][] = array(
  'stock' => $stock,
  'product_id'  => $result['product_id'],
  ...
);
  • +1 2
Ссылка на комментарий
Поделиться на других сайтах


Спасибо!!

Всё получилось!

Только всё же с data заработало... без data белый экран...

 

data['stock'] будет применяться ко всем товарам

это не совсем верно

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


data['stock'] будет применяться ко всем товарам

это не совсем верно

))) да.. при добавлении нового товара, количество в категориях не соответствует количеству в карточке товара..

получается во всей проверке надо убрать data?

Изменено пользователем Vitaly2
Ссылка на комментарий
Поделиться на других сайтах


Давно не заглядывал...Но количество постов вопрос/ответ ожидаемо...

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Давно не заглядывал...Но количество постов вопрос/ответ ожидаемо...

 

не трольте меня.. ))

 

 

data['stock'] будет применяться ко всем товарам

это не совсем верно

 

но если я уберу data, то что же тогда прописать в tpl?

 

оставил так

 

2016092019_3352950_23360849.png

 

и в tpl такой код

<?php echo $stock; ?>

 

и получаю ошибку что переменная не определена..

Notice: Undefined variable: stock in /home/vidge/domains/tutdarom.ru/public_html/catalog/view/theme/fastfood/template/product/category.tpl on line 158

 

 

ой блин.. извиняюсь.. это я тупанул..

надо ж было так в тпл написать

<?php echo $product['stock']; ?>

 

всё заработало вобщем!

Спасибо ещё раз добрые люди!!

Изменено пользователем Vitaly2
Ссылка на комментарий
Поделиться на других сайтах


  • 4 года спустя...
В 19.09.2016 в 09:29, Bazilio сказал:

 

В контроллер category.php нужно добавить не точно такой код, как в product.php

В category.php перед $data['products'][] = array( вставить

if ($result['quantity'] <= 0) {
	$data['stock'] = $result['stock_status'];
} elseif ($this->config->get('config_stock_display')) {
	$data['stock'] = $result['quantity'];
} else {
	$data['stock'] = $this->language->get('text_instock');
}

А после 'price'       => $price, добавить

'stock'	=> $data['stock'],

В файле catalog/view/theme/default/template/product/category.tpl в нужном месте вставить

<?php echo $product['stock']; ?>

 

Для движка Version 2.1.0.2 (rs.1) рекомендую поставить как РЕШЕНИЕ - только что реализовал у себя с первой попытки.

Единственный момент: в настройках товара наличие должно быть настроено на вывод количеством, а не по факту "В наличии" или "Нет в наличии". Иначе те товары, которые есть в наличии выводят "text_instock".

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


  • 1 год спустя...
20.09.2016 в 10:18, thentru сказал:

Перед набором массива

$data['products'][] = array(
  'product_id'  => $result['product_id'],
  ...
);

вставляете вашу проверку

if ($result['quantity'] <= 0) {
  ...
}

причем в в этой проверке вам нужно записать данные в переменную, а не в массив data

$stock = $result['stock_status'];

и после эту переменную добавить в массив products

$data['products'][] = array(
  'stock' => $stock,
  'product_id'  => $result['product_id'],
  ...
);

Спасибо добрый человек за помощь

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

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

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