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

Не выводить сопутствующие товары если их 0 на складе (нет в наличии)


newjey

Recommended Posts

Добрый день.

Подскажите как можно сделать так что бы если товар закончился и у него значение На складе 0 то он не будет выводится в сопутствующих товарах. А если он есть в наличии то будет)

Спасибо.

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


  • 2 weeks later...

Если прописывать условие напрямую то не выходит ничего.

пробовал код в product.tpl

 <?php if ($products) { ?>
      <h3><?php echo $text_related; ?></h3>
      <div class="row">
        <?php $i = 0; ?>
        <?php foreach ($products as $product) { ?>
        <?php if ($column_left && $column_right) { ?>
        <?php $class = 'col-lg-6 col-md-6 col-sm-12 col-xs-12'; ?>
        <?php } elseif ($column_left || $column_right) { ?>
        <?php $class = 'col-lg-4 col-md-4 col-sm-6 col-xs-12'; ?>
        <?php } else { ?>
        <?php $class = 'col-lg-3 col-md-3 col-sm-6 col-xs-12'; ?>
        <?php } ?>
        <div class="<?php echo $class; ?>">
          <div class="product-thumb transition">
            <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>" class="img-responsive" /></a></div>
             <div class="caption">
              <h4><a style="font-size: 12px;" href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></h4>
			  <div>
			  <div style="font-size:11px;color:#888;text-align:left;"><?php echo $product['manufacturer']; ?></div>
			 <div style="text-align:right;margin-top:-20px;padding-bottom:5px;"> <?php if ($product['rating']) { ?>
                <div class="rating">
                  <?php for ($i = 1; $i <= 5; $i++) { ?>
                  <?php if ($product['rating'] < $i) { ?>
                  <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span>
                  <?php } else { ?>
                  <span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span>
                  <?php } ?>
                  <?php } ?>
                </div>
                <?php } ?></div></div>
        
                
                <!--<?php if ($product['price']) { ?>
                <p class="price">
                  <?php if (!$product['special']) { ?>
                  <?php echo $product['price']; ?>
                  <?php } else { ?>
                  <span class="price-new"><?php echo $product['special']; ?></span> <span class="price-old"><?php echo $product['price']; ?></span>
                  <?php } ?>
                  <?php if ($product['tax']) { ?>
                  <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
                  <?php } ?>-->
                </p>
                <?php } ?>
              </div>
            <div class="button-group">
<?php if ($product['price']) { ?>
        <div class="price" style="float: left;">
          <?php if (!$product['special']) { ?>
          <?php echo $product['price']; ?>
          <?php } else { ?>
          <span class="price-new"><?php echo $product['special']; ?></span> <span class="price-old"><?php echo $product['price']; ?></span>
          <?php } ?>
          <?php if ($product['tax']) { ?>
          <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
          <?php } ?>
         
        </div>
        <?php } ?>
        <?php if ($product_quantity > 0) { ?> 
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
<?php } else { ?>
<div style="text-align:right;font-weight:600;color:#A3A3A3;padding-top:5px;"><?php echo "ПРОДАНО"; ?></div>
<?php } ?>

      </div>
            </div>
          </div>
        <?php if (($column_left && $column_right) && ($i % 2 == 0)) { ?>
        <div class="clearfix visible-md visible-sm"></div>
        <?php } elseif (($column_left || $column_right) && ($i % 3 == 0)) { ?>
        <div class="clearfix visible-md"></div>
        <?php } elseif ($i % 4 == 0) { ?>
        <div class="clearfix visible-md"></div>
        <?php } ?>
        <?php $i++; ?>
        <?php } ?>
      </div>
      <?php } ?>

вставить в условие <?php if (isset($product['quantity']) && ($product['quantity'] > 0)) { ?> и т.д. но не выходит.

Возможно в контроллере надо делать. Может знает кто?

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


Если не ошибаюсь то вот эта функция отвечает за вывод Сопутствующих товаров?

public function getProductRelated($product_id) {
		$product_related_data = array();

		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");

		foreach ($query->rows as $result) {
			$product_related_data[] = $result['related_id'];
		}

		return $product_related_data;
	}

Верно?

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


И ещё бы было отлично брать товары из той же категории что и главный товар и выводить товары имеющих такие же атрибуты. Тоесть если в категории есть товары с атрибутом Цвет: красный то выводить их автоматически. Если несколько атрибутов то по нескольким схожим атрибутам.

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


Если не сложно можете подсказать как её переделать что бы если у товара наличие 0 не выводить его?

public function getProductRelated($product_id) {
		$product_related_data = array();

		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related WHERE quantity > 0 AND product_id = '" . (int)$product_id . "'");

		foreach ($query->rows as $result) {
			$product_related_data[] = $result['related_id'];
		}

		return $product_related_data;
	}
  • +1 1
Надіслати
Поділитися на інших сайтах

public function getProductRelated($product_id) {
		$product_related_data = array();

		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related WHERE quantity > 0 AND product_id = '" . (int)$product_id . "'");

		foreach ($query->rows as $result) {
			$product_related_data[] = $result['related_id'];
		}

		return $product_related_data;
	}

Всё равно выводит продукт которого нет в наличии(

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


Всегда обновляю после внесения изменений.

Прописываю в admin/model/catalog/product.php

выборку по количеству:

public function getProductRelated($product_id) {
		$product_related_data = array();

		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related WHERE quantity > 0 AND product_id = '" . (int)$product_id . "'");

		foreach ($query->rows as $result) {
			$product_related_data[] = $result['related_id'];
		}

		return $product_related_data;
	}

Обновляю модификатор и всё равно товар которого нет на складе отображается(

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


quantity > 0 по ходу надо как-то указать из таблицы product а не из product_related

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id OR) WHERE p.quantity > 0 AND pr.product_id = '" . (int)$product_id . "'");
Надіслати
Поділитися на інших сайтах


 

а да, чет я тупанул

и почему admin?

 

dade, дописал 

 

Не знаю почему решил в admin, но функцию привёл я выше именно из admin, в каталоге функция немного иначе выглядит:

public function getProductRelated($product_id) {
		$product_data = array();

		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");

		foreach ($query->rows as $result) {
			$product_data[$result['related_id']] = $this->getProduct($result['related_id']);
		}

		return $product_data;
	}

её можно переделать?

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


 

тоже самое после WHERE

 p.quantity > 0 AND

Отлично, сработало. Скажите а есть возможность сделать вывод автоматический, товаров из категории по сходным атрибутам?

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


можно но сложно

сначала для товара получаем атрибуты (там же функция)

 

а потом уже для каждого собираем список товаров

 

далее каждый товар сравниваем занося в массив кол-во общих атритутов

 

сортируем по полю "схожесть" и забираем нужное число товаров

 

:-D

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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