Перейти к содержанию
ActiveSync

Статус товара (нет в наличии / цена)

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

Здравствуйте, пытался сделать в карточке товара отображение статуса товара ("Нет в наличии") с помощью php echo, вместо $price, если количество товара, которое указывается в поле Количество (quantity) будет меньше или равно 0.

 

Не могу разобраться, почему условие выполняется всегда.
В чем я дырявый? Прошу помочь.. Как правильней всего сделать? 
Если количество 0 - вывод php echo 'Нет в наличии' вместо цены или же с ценой, но ниже без кнопки fastorderForm

Если количество не 0, то как обычно выводит + вывод кнопки fastOrderForm.

 

	 <?php echo $promotion; ?>
     <?php if ($price) { ?>
      <div class="price">
	  <?php if($product_info['quantity'] > 1) { ?>
        <?php if (!$special) { ?>
        <?php echo $price; ?>
		  <!-- fastOrderForm -->
          <input type="button" id="openFastOrderForm" value="БЫСТРЫЙ ЗАКАЗ"/>
         <!-- end fastOrderForm -->
        <?php } else { ?> 
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
         <?php if (isset($saving)) { ?>
           <div  class="savemoney">- <?php echo $saving; ?>%</div>
           <?php } ?> 
        <?php } ?>
	  <?php } elseif($product_info['quantity'] <= 0) { ?> 
	  <span><?php echo 'Нет в наличии'; ?></span>
	  <?php } ?>

 

Изменено пользователем ActiveSync

Поделиться сообщением


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

есть пару вопросов

<?php if($product_info['quantity'] > 1) { ?>

почему в начале > 1  - тут должно быть больше 0 

<?php } elseif($product_info['quantity'] <= 0) { ?> 

а тут зачем elseif если это последнее условие и зачем у него условие 

если было больше 1 ( 0 ) то в случае 'иначе' будет все остально и условие не нужно 

<?php else { ?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
55 минут назад, prived сказал:

есть пару вопросов


<?php if($product_info['quantity'] > 1) { ?>

почему в начале > 1  - тут должно быть больше 0 


<?php } elseif($product_info['quantity'] <= 0) { ?> 

а тут зачем elseif если это последнее условие и зачем у него условие 

если было больше 1 ( 0 ) то в случае 'иначе' будет все остально и условие не нужно 

<?php else { ?>

 

Сделал так:

	 <?php echo $promotion; ?>
     <?php if ($price) { ?>
      <div class="price">
	  <?php if(!$product_info['quantity'] > 0) { ?>
        <?php if (!$special) { ?>
        <?php echo $price; ?>
		<!-- fastOrderForm -->
          <input type="button" id="openFastOrderForm" value="БЫСТРЫЙ ЗАКАЗ"/>
         <!-- end fastOrderForm -->
        <?php } else { ?> 
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
         <?php if (isset($saving)) { ?>
           <div  class="savemoney">- <?php echo $saving; ?>%</div>
           <?php } ?> 
        <?php } ?>
	  <?php } else { ?>
		  <span><?php echo 'Нет в наличии'; ?></span>
		  <?php } ?>

Все равно не работает так, как надо. Ставил что 1, что 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, ActiveSync сказал:

 <?php if(!$product_info['quantity'] > 0) { ?>

 

Скорее всего тут ошибка уберите перед $product_info['quantity'] знак !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Bn174uk сказал:

 

Скорее всего тут ошибка уберите перед $product_info['quantity'] знак !

Убрал - не помогло. Действует только условие else (нет в наличии), даже когда в админке quantity задается больше 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, ActiveSync сказал:

Убрал - не помогло. Действует только условие else (нет в наличии), даже когда в админке quantity задается больше 0.

 

там надо не продукт инфо а $quantity

перед этим добавив его в контроллер

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, spectre сказал:

 

там надо не продукт инфо а $quantity

перед этим добавив его в контроллер

Благодарю, все работает так как надо :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 15.08.2018 в 16:36, spectre сказал:

 

там надо не продукт инфо а $quantity

перед этим добавив его в контроллер

Хорошо, а как теперь сделать тоже самое, но в категориях? Допустим мне надо выводить кнопку нет в наличии вместо обычной кнопки купить:

		<?php if($quantity2 > 0) { ?>
        <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" />
		<?php } else { ?>
		<input type="button" value="Нет в наличии" onClick='location.href="https://сайт"' id="button-cart" class="button" />
		<?php } ?>

Объявил переменную quantity2 в контроллере category.php, но ничего не происходит (всегда 0 - нет в наличии)

$this->data['quantity2'] = $category_info['quantity'];

 

Поделиться сообщением


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

А вот там уже result['quantity'] 

Посмотрите как генерируется массив товаров в контроллере и все поймёте 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
17 часов назад, spectre сказал:

А вот там уже result['quantity'] 

Посмотрите как генерируется массив товаров в контроллере и все поймёте 

 

Судя по всему массив товаров в контроллере генерируется тут:

				$this->data['products'][] = array(
					'product_id'  => $result['product_id'],
						# OCFilter start
						'ocfilter_products_options' => $ocfilter_products_options[$result['product_id']],
						# OCFilter end
//					'thumb'       => $image,
					'name'        => $result['name'],
                                        'thumb'       => $image,
                                       	'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
										'length'      => number_format($result['length'], 1) . "",
                    'width'       => number_format($result['width'], 1) . "",
                    'height'      => number_format($result['height'], 1) . "",
       'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),
					'price'       => $price,
					'special'     => $special,
					'tax'         => $tax,
					'rating'      => $result['rating'],
					'reviews'     => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);

по логике, мне нужно вставить

'quantity' => result['quantity'],

Если так - то по прежнему не работает, если нет, значит я кривой)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, ActiveSync сказал:

Если так - то по прежнему не работает, если нет, значит я кривой)

так

а в категории будет $product['quantity']

  • +1 1

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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