Strona główna forum Wsparcie Moduły i dodatki if any simple product quantity =0 conf. product quantity= 0

if any simple product quantity =0 conf. product quantity= 0

Wszystko o modułach i dodatkach dla Magento...


Posty: 2
Gadu-Gadu: 0

Witam Was.
Potrzebuje pomocy, jestem świeży w Magento. Chciałbym uzyskać coś takiego jak w tytule posta.
Mamy produkt konfigurowalny który ma parę opcji składających się z prostych produktów, jeśli choć jedna z nich (simple product) zostanie dodana do koszyka - produkt konfigurowalny powinien być niedostępny dla kupujących.
Wydaje mi się, że w tych plikach jest pogrzebany problem:
Block/CatalogInventory/Stock.php or Block/Catalog/Product/View/Type/Configurable.php

Jeśli ktoś ma jakąś wskazówkę, będę wdzięczny.

if any simple product quantity =0 conf. product quantity= 0

PostTeraz jest 4 kwi 2025, o 23:44
Google

Posty: 427
Lokalizacja: Internet


Posty: 1575
Gadu-Gadu: 0

może nie ma sensu się bawić konfigurowalnymi produktami, próbowałeś wybór zrobić jako niestandardową opcję produktu prostego??
hosting-magento.pl / magentohosting.eu - szybki hosting Magento
https://www.mage24.pl/ - twój sklep Magento 2 w 5 minut


Posty: 2
Gadu-Gadu: 0

Witam, dzięki za radę. Niestety muszę zostać przy konfigurowalnych produktach, ponieważ te opcję się powtarzają przy każdym produkcie, gdyby to był jednostkowy przypadek, masz rację wtedy niestandardowe opcje i sprawa załatwiona.
Aktualnie rozwiązałem to w bardzo nieładny sposób, przez zmianę części pliku:
app/design/frontend/base/default/template/catalog/product/view/addtocart.phml
<?php if($_product->isSaleable()): ?>
<?php
//sprawdzamy czy jakiś simple product nalerzący do configurable product ma stan magazynowy = 0, jeśli tak, to wyświetlamy pustego div'a "add-to-cart", jeśli nie to standardowy przycisk dodaj do koszyka
$conf = Mage::getModel('catalog/product_type_configurable')->setProduct($_product);
$col = $conf->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions();
foreach($col as $simple_product){

  $qtySimple =  round(Mage::getModel('cataloginventory/stock_item')->loadByProduct($simple_product)->getQty());
   if ($qtySimple == 0){
      $outOfStock = 1;
   }
}
?>
<?php if (isset($outOfStock)): ?>
   <div class="add-to-cart"></div>

<?php else: ?>


    <div class="add-to-cart">
        <?php if(!$_product->isGrouped()): ?>
        <label for="qty"><?php echo $this->__('Qty:') ?></label>
        <input type="text" name="qty" id="qty" maxlength="12" value="<?php echo $this->getProductDefaultQty() * 1 ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />
        <?php endif; ?>
        <button type="button" title="<?php echo $buttonTitle ?>" class="button btn-cart" onclick="productAddToCartForm.submit(this)"><span><span><?php echo $buttonTitle ?></span></span></button>
        <?php echo $this->getChildHtml('', true, true) ?>
    </div>
   <?php endif; ?>
<?php endif; ?>


To spełnia zadanie, tylko jeśli na liście produktów mamy przysłonięty button dodaj do koszyka domyślnie. Można jeszcze dorobić funkcję sprawdzającą w momencie dodania do koszyka (2 klientów ogląda ten sam produkt)

Jeśli ktoś ma pomysł jak lepiej zrobić, niech da znać.


Powrót do Moduły i dodatki