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

magento.stackexchange https://magento.stackexchange.com/questions/114712

Вопрос

У меня есть следующее, что показывает набор продуктов на странице продукта:

if ($_product->getAttributeText('bundle') == yes && $simplecount > 1):
$product_ids = explode(',',$_product->get_bundle_products());

$collection = Mage::getModel('catalog/product')
    ->getCollection()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('entity_id', array('in' => $product_ids));

echo'<div class="bun2c" style="text-align:center; float:right;">';
foreach($collection as $eachproduct){
echo '<a href="' . $eachproduct->getProductUrl() . '"><img class="bundle" src="' . $eachproduct->getImageUrl() . '" title="' . $eachproduct->getName() . '"></a>';
$productId = $eachproduct->getId();
$simplecount = (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($eachproduct)->getQty();
}

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

Я пробовал использовать качество элемента ($ simplecount), но не работает.

Я использовал Mage::getModel('cataloginventory/stock_item')->loadByProduct($eachproduct)->getIsInStock() но это работает только тогда, когда каждого товара нет в наличии

Это было полезно?

Решение

Мне удалось получить то, что я хотел, и вот что я сделал:

Сначала я подсчитал товары, которые были в наличии:

$fullstock = 0;
$inStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($eachproduct)->getIsInStock();
$fullstock += $inStock;

Затем я получил количество продуктов в комплекте:

$product_count = count($collection);

тогда я использовал $fullstock == $product_count в моем if заявление

Полный код выглядит следующим образом

$ids = array();
$quote = Mage::getSingleton('checkout/session')->getQuote();
$fullstock = 0;
    foreach ($quote->getAllItems() as $item) {
        $ids[$item->getProductId()] = $item->getProductId(); //used array key here to avoid duplicates
    }
$product_ids = explode(',',$_product->getbundle_products());
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*')->addAttributeToFilter('entity_id', array('in' => $product_ids));
    foreach($collection as $eachproduct){
        $productId = $eachproduct->getId();
        $inStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($eachproduct)->getIsInStock();
        $fullstock += $inStock;
}
$product_count = count($collection);
    if ($_product->getAttributeText('bundle') == yes && $fullstock == $product_count):  
        echo'<div class="fgfgdfd" style="text-align:center; float:right;">';
    foreach($collection as $eachproduct){
        echo '<a href="' . $eachproduct->getProductUrl() . '"><img class="bundle" src="' . $eachproduct->getImageUrl() . '" title="' . $eachproduct->getName() . '"></a>';
            $productId = $eachproduct->getId();
if (isset($ids[$productId])) {
    echo '<span class="bundle-check">&#10003;</span>';
}
$combined_price += $eachproduct->getFinalPrice()/100*$_product->getbundle_discount();
}
setlocale(LC_MONETARY, 'en_GB.UTF-8');
echo '<div><p class="availability in-stock">Save <span class="in-stock1">' . money_format('%.2n', $combined_price) . '</span> <span class="when-you"> When you buy</span> <span class="with-with"> with</span> the bundle</p></div></div>';
endif;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top