묶음 제품 중 하나가 재고가없는 경우이 문제를 표시 할 필요가 없습니다.
-
29-09-2020 - |
문제
제품 페이지에서 제품 번들을 보여주는 다음을 가지고 있습니다.
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();
}
.
이것은 잘 작동하지만 번들 제품 중 하나가 재고가 없을 때 이것을 표시 할 필요가 없습니다.
항목 quatity ($ simpleCount)로 시도했지만 작동하지 않습니다.
ive는 Mage::getModel('cataloginventory/stock_item')->loadByProduct($eachproduct)->getIsInStock()
를 사용했지만 이는 모든 항목이 재고가없는 경우에만 작동합니다
해결책
나는 내가 원하는 것을 얻을 수 있었고 여기서 내가 한 일이있다
처음에는 재고가있는 항목을 계산했습니다.
$fullstock = 0;
$inStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($eachproduct)->getIsInStock();
$fullstock += $inStock;
.
i 다음 번들의 제품 수를 얻었습니다.
$product_count = count($collection);
.
i 그런 다음 $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">✓</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;
. 제휴하지 않습니다 magento.stackexchange