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

Цветные статусы товаров в карточке


Recommended Posts

Уважаемые форумчане, перелопатил весь форум, находил похожите темы, но до конца разобраться не смог, т.к. плохо разбираюсь в php.

Суть в следующем: хочу на сайте ocStore 2.3 в карточке товара реализовать разные цвета для разных статусов отсутствия на складе. Думаю это сделать следующим образом:

1) В файле /catalog/view/theme/*/template/product/product.tpl заменить строку:

<span class="stock"><?php echo $stock; ?></span>

на

<span class="stock stock_id_<?php echo $product[stock_status_id]; ?>"><?php echo $stock; ?></span>

А далее, для разных классов .stock_id_*** в css прописать свои стили.

Проблема в том, что <?php echo $product[stock_status_id]; ?> не вызывает stock_status_id. Тут, или я неправильно делаю вызов или в контроллере нужно прописать вызов. Но вот как правильно, я не знаю. Буду признателен, если кто подскажет, как это можно сделать.

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


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

Уважаемые форумчане, перелопатил весь форум, находил похожите темы, но до конца разобраться не смог, т.к. плохо разбираюсь в php.

Суть в следующем: хочу на сайте ocStore 2.3 в карточке товара реализовать разные цвета для разных статусов отсутствия на складе. Думаю это сделать следующим образом:

1) В файле /catalog/view/theme/*/template/product/product.tpl заменить строку:


<span class="stock"><?php echo $stock; ?></span>

на


<span class="stock stock_id_<?php echo $product[stock_status_id]; ?>"><?php echo $stock; ?></span>

А далее, для разных классов .stock_id_*** в css прописать свои стили.

Проблема в том, что <?php echo $product[stock_status_id]; ?> не вызывает stock_status_id. Тут, или я неправильно делаю вызов или в контроллере нужно прописать вызов. Но вот как правильно, я не знаю. Буду признателен, если кто подскажет, как это можно сделать.

в модели catalog/product.php после

'stock_status'     => $query->row['stock_status'],

'stock_status'     => $query->row['stock_status'],

добавить

'stock_status_id'     => $query->row['stock_status_id'],

 

В контроллере product/product.php после

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

добавить

$data['stock_status_id'] = $product_info['stock_status_id'];

во вьюхе использовать

<span class="stock stock_id_<?php echo $stock_status_id; ?>"><?php echo $stock; ?></span>
Змінено користувачем Blast
  • +1 1
Надіслати
Поділитися на інших сайтах

Спасибо @Blast за помощь, все вышло!!!

Если кому надо, выкладываю ocmod. Останется только определиться с нужными id этих статусов и в css добавить соответствующие стили для классов: stock_id_# (где # - id нужного статуса)

 

color_outstock.ocmod.xml

Змінено користувачем Dimdimych
  • +1 3
Надіслати
Поділитися на інших сайтах


19 минут назад, Dimdimych сказал:

Если кому надо, выкладываю ocmod

Спасибо, что делитесь решениями.

 

19 минут назад, Dimdimych сказал:

Останется только определиться с нужными id этих статусов и в css добавить

Можно пойти дальше)

 

image.png.37ce8f0d26a8648e1442334bb9b9271d.png

 

В паблике не будет правда по определенным причинам, но как идея)

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

Есть во всем этом один косяк - для товаров, у которых установлен статус "Нет в наличии", при кол-ве >0 и при кол-ве = 0 будет один и то же stock_status_id и, соответственно, один цвет.

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


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

Есть во всем этом один косяк - для товаров, у которых установлен статус "Нет в наличии", при кол-ве >0 и при кол-ве = 0 будет один и то же stock_status_id и, соответственно, один цвет.

if ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 5) $data['stock_status_id'] = "100500";
Надіслати
Поділитися на інших сайтах

10 часов назад, Blast сказал:

if ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 5) $data['stock_status_id'] = "100500";

Скажите, это в контроллере нужно заменить или добавить?

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


40 минут назад, Dimdimych сказал:

Скажите, это в контроллере нужно заменить или добавить?

ну это была просто подсказка в каком направлении двигаться. Если говорить о точном коде, то можно например так

if ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 5) {
	$data['stock_status_id'] = "100500"; /* тут любое значение можно записать */
} else {
	$data['stock_status_id'] = $product_info['stock_status_id'];
}

заменить в контроллере 

$data['stock_status_id'] = $product_info['stock_status_id'];
  • +1 1
Надіслати
Поділитися на інших сайтах

@Blast, немного модифицировал Ваш код, т.к. заметил еще один нюанс: у товаров при количестве >0 отображается цвет установленного статуса отсутствия на складе, а должен быть цвет для текста "на складе", т.е. в моем случае, для $data['stock_status_id'] = "stock";

if ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 5) {
    $data['stock_status_id'] = "stock";
} elseif ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 6) {
    $data['stock_status_id'] = "stock";
} elseif ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 7) {
    $data['stock_status_id'] = "stock";
} elseif ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 10) {
    $data['stock_status_id'] = "stock";
} else {
    $data['stock_status_id'] = $product_info['stock_status_id'];
}

 

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


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

@Blast, немного модифицировал Ваш код, т.к. заметил еще один нюанс: у товаров при количестве >0 отображается цвет установленного статуса отсутствия на складе, а должен быть цвет для текста "на складе", т.е. в моем случае, для $data['stock_status_id'] = "stock";


if ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 5) {
    $data['stock_status_id'] = "stock";
} elseif ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 6) {
    $data['stock_status_id'] = "stock";
} elseif ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 7) {
    $data['stock_status_id'] = "stock";
} elseif ($product_info['quantity'] > 0 && $product_info['stock_status_id'] == 10) {
    $data['stock_status_id'] = "stock";
} else {
    $data['stock_status_id'] = $product_info['stock_status_id'];
}

 

тогда проще можно

if ($product_info['quantity'] > 0) {
	$data['stock_status_id'] = "stock"; 
} else {
	$data['stock_status_id'] = $product_info['stock_status_id'];
}
Надіслати
Поділитися на інших сайтах

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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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