Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Статус наличия товара в категории (списке товаров)


Recommended Posts

Доброго времени, Уважаемые форумчане.

Помогите решить неразрешимую для меня задачу)

Нужно вывести в карточке товара на странице категории товаров (список товаров) статус наличия товара. Именно тот статус, который задан в админке.

Например:

  • Есть на складе
  • Нет на складе
  • Ожидается поставка
  • и т.д.

Никак не могу решить

 

Данные

Версия Opencart 2.3.0.2

В шаблоне

<?php
if ($product['quantity'] > 0) {
echo ('В наличии: ' . $product['quantity']);
} else {
echo $product['stock_status'];
}
?>

В контроллере последние 2 строки

$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..',
					'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),
					'price'       => $price,
					'special'     => $special,
					'quantity'	  => $result['quantity'],
					'stock_status' => $result['stock_status'],

stock status выводит просто ID самого статуса, а как бы подтянуть текст?

Надіслати
Поділитися на інших сайтах


SELECT ss.name,p.quantity FROM `oc_stock_status` ss JOIN oc_product p ON (ss.stock_status_id=p.stock_status_id) WHERE p.product_id='3424'

http://prntscr.com/jc95fe

  • +1 1
Надіслати
Поділитися на інших сайтах

15 часов назад, Sharapov317 сказал:
  • Есть на складе
  • Нет на складе
  • Ожидается поставка
  • и т.д.

Учтите, эти статусы задаются для  отсутствия товара

Надіслати
Поділитися на інших сайтах


20 часов назад, AWARO сказал:

Учтите, эти статусы задаются для  отсутствия товара

Ну так я же и вывод делаю при отсутствии

Надіслати
Поділитися на інших сайтах


22 часа назад, legioner26 сказал:

SELECT ss.name,p.quantity FROM `oc_stock_status` ss JOIN oc_product p ON (ss.stock_status_id=p.stock_status_id) WHERE p.product_id='3424'

http://prntscr.com/jc95fe

Извините тут не совсем Вас понял(

'stock_status' => тот запрос к БД, который Вы написали?,
Надіслати
Поділитися на інших сайтах


35 минут назад, Sharapov317 сказал:

Ну так я же и вывод делаю при отсутствии

я к тому что выведя только их у вас и у товаров которые в наличии статус будет нет в наличии
на форуме давно есть решения - пользуйтесь поиском

 

Надіслати
Поділитися на інших сайтах


5 минут назад, AWARO сказал:

я к тому что выведя только их у вас и у товаров которые в наличии статус будет нет в наличии
на форуме давно есть решения - пользуйтесь поиском

 

Это вовсе не то о чем я спрашиваю)

Мне не нужно самостоятельно задавать значения в файле перевода

И здесь 

if ($product['quantity'] > 0) {
echo ('В наличии: ' . $product['quantity']);

я как раз и говорю движку ,что если товар есть, то вывести строку В наличии и количество

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

И вот тема как раз как вытащить этот статус

Надіслати
Поділитися на інших сайтах


54 минуты назад, Sharapov317 сказал:

Извините тут не совсем Вас понял(


'stock_status' => тот запрос к БД, который Вы написали?,

Если выводить то что в админке, просто делаете метод в модельке и обращаетесь к нему.

Надіслати
Поділитися на інших сайтах

6 минут назад, Sharapov317 сказал:

Это вовсе не то о чем я спрашиваю)

Мне не нужно самостоятельно задавать значения в файле перевода

И здесь 


if ($product['quantity'] > 0) {
echo ('В наличии: ' . $product['quantity']);

я как раз и говорю движку ,что если товар есть, то вывести строку В наличии и количество

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

И вот тема как раз как вытащить этот статус

Так статус без количества товаров нужен?

Надіслати
Поділитися на інших сайтах

Запрос еще проще :)

В общем в модели продукта создайте метод

public function getStock_status($stock_status_id) {
   $query = $this->db->query("SELECT name FROM " . DB_PREFIX . "stock_status WHERE stock_status_id = '" . (int)$stock_status_id. "'");
        return $query->row;
}

и в него передайте ID статуса

'stock_status' => $this->model_catalog_product->getStock_status($result['stock_status']),

В вашем щаблоне так и оставляем

if ($product['quantity'] > 0) {
echo ('В наличии: ' . $product['quantity']);
} else {
echo $product['stock_status'];
}

 

Надіслати
Поділитися на інших сайтах

ничего себе проще)

Я бы неделю потратил и то наверное не сделал(

Попробую отпишу

  • +1 1
Надіслати
Поділитися на інших сайтах


6 минут назад, Sharapov317 сказал:

ничего себе проще)

Я бы неделю потратил и то наверное не сделал(

Попробую отпишу

оплатите @legioner26  он вам мигом сделает что нужно

Надіслати
Поділитися на інших сайтах


13 минут назад, AWARO сказал:

оплатите @legioner26  он вам мигом сделает что нужно

:)

Надіслати
Поділитися на інших сайтах

2 часа назад, legioner26 сказал:

Запрос еще проще :)

В общем в модели продукта создайте метод


public function getStock_status($stock_status_id) {
   $query = $this->db->query("SELECT name FROM " . DB_PREFIX . "stock_status WHERE stock_status_id = '" . (int)$stock_status_id. "'");
        return $query->row;
}

и в него передайте ID статуса


'stock_status' => $this->model_catalog_product->getStock_status($result['stock_status']),

В вашем щаблоне так и оставляем


if ($product['quantity'] > 0) {
echo ('В наличии: ' . $product['quantity']);
} else {
echo $product['stock_status'];
}

 

Не получается что-то.

И к сожалению я не знаком с запросами базы данных, так что даже сравнить не с чем.

 

А этот запрос точно нужно вставить в модель товара? Я ведь хочу вывести статус в категории

Надіслати
Поділитися на інших сайтах


3 часа назад, Sharapov317 сказал:

Не получается что-то.

И к сожалению я не знаком с запросами базы данных, так что даже сравнить не с чем.

 

А этот запрос точно нужно вставить в модель товара? Я ведь хочу вывести статус в категории

Да точно.

Надіслати
Поділитися на інших сайтах

6 часов назад, Sharapov317 сказал:

Не получается что-то.

И к сожалению я не знаком с запросами базы данных, так что даже сравнить не с чем.

 

А этот запрос точно нужно вставить в модель товара? Я ведь хочу вывести статус в категории

 return $query->row['name'];

или

if ($product['quantity'] > 0) {
echo ('В наличии: ' . $product['quantity']);
} else {
echo $product['stock_status']['name'];
}

Надіслати
Поділитися на інших сайтах

  • 2 years later...
В 02.05.2018 в 13:29, legioner26 сказал:

Запрос еще проще :)

В общем в модели продукта создайте метод


public function getStock_status($stock_status_id) {
   $query = $this->db->query("SELECT name FROM " . DB_PREFIX . "stock_status WHERE stock_status_id = '" . (int)$stock_status_id. "'");
        return $query->row;
}

и в него передайте ID статуса


'stock_status' => $this->model_catalog_product->getStock_status($result['stock_status']),

В вашем щаблоне так и оставляем


if ($product['quantity'] > 0) {
echo ('В наличии: ' . $product['quantity']);
} else {
echo $product['stock_status'];
}

 

 

а Как сделать что б он дергал статус не у товара, а из системы (Главная-Состояние склада и там 6 статусов), например под id 5 нужно взять переменную ее текст (например "под реализацию"), и эту переменную вставить в карточку товара.

Надіслати
Поділитися на інших сайтах


1 час назад, igorfelix сказал:

 

а Как сделать что б он дергал статус не у товара, а из системы (Главная-Состояние склада и там 6 статусов), например под id 5 нужно взять переменную ее текст (например "под реализацию"), и эту переменную вставить в карточку товара.

Вы хотите просто выводить этот статус если количество 0 ?

Надіслати
Поділитися на інших сайтах

11 часов назад, legioner26 сказал:

Вы хотите просто выводить этот статус если количество 0 ?

Даже если положительный остаток, просто хочу в карточку товара вывести статус под id 5 (Ожидание 2-3 дня)

 

Все я сам сделал ) в model 

(SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = 6 AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status_2,
'stock_status_2'     => $query->row['stock_status_2']

контролер 

	$data['stock'] = $product_info['stock_status_2'];

шаблон 

 

<?php echo $stock; ?>

Змінено користувачем igorfelix
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.