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

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


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
Надіслати
Поділитися на інших сайтах


  В 16.04.2020 в 13:50, 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. Тут, или я неправильно делаю вызов или в контроллере нужно прописать вызов. Но вот как правильно, я не знаю. Буду признателен, если кто подскажет, как это можно сделать.

Expand  

в модели 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.xmlFetching info...

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


  В 16.04.2020 в 14:39, Dimdimych сказав:

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

Expand  

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

 

  В 16.04.2020 в 14:39, Dimdimych сказав:

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

Expand  

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

 

image.png.37ce8f0d26a8648e1442334bb9b9271d.png

 

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

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

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

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


  В 16.04.2020 в 18:21, Dimdimych сказав:

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

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

  В 16.04.2020 в 21:11, Blast сказав:

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

Expand  

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

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


  В 17.04.2020 в 07:49, Dimdimych сказав:

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

Expand  

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

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'];
}

 

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


  В 17.04.2020 в 10:46, 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'];
}

 

Expand  

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

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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