2012-12-26 74 views
0

我正在嘗試通過使用顯示特定類別產品列表的foreach循環從CMS頁面中找到一種將產品添加到購物車的方法。問題是我的購物車表單只會將其中一個產品提交到購物車。使用foreach從CMS頁面添加產品到購物車?

任何人都可以指向正確的方向,我已經在這裏好幾個小時了!

我不知道這是否是我的形式,或者如果這甚至有可能在Magento,但我會很感激索姆意見...

<?php if($this->getItems()->getSize()): ?> 
<div class="block block-related"> 
    <div class="block-title"> 
     <strong><span><?php echo $this->__('Related Products') ?></span></strong> 
    </div> 
    <div class="block-content"> 
     <p class="block-subtitle"><?php echo $this->__('Check items to add to the cart or add to your wishlist') ?>&nbsp;<br /></p> 
     <div class="form-horizontal"> 
     <?php foreach($this->getItems() as $_item): ?> 

       <div class="control-group"> 
        <label for="related-checkbox<?php echo $_item->getId() ?>" class="control-label"> 
         <a class="fancybox static-thumbs pull-left" href="<?php echo $this->helper('catalog/image')->init($_item, 'small_image')->resize(500, 450); ?>" title="<?php echo $this->htmlEscape($_item->getName()) ?>" ><img src="<?php echo $this->helper('catalog/image')->init($_item, 'small_image')->resize(135, 135) ?>" width="150" height="125" alt="<?php echo $this->htmlEscape($_item->getName()) ?>" /></a> 
        </label> 

        <div class="controls"> 
        <label class="checkbox"> 
         <?php if(!$_item->isComposite() && $_item->isSaleable()): ?> 
          <?php if (!$_item->getRequiredOptions()): ?> 
           <input type="checkbox" class="checkbox related-checkbox" id="related-checkbox<?php echo $_item->getId() ?>" name="related_products[]" value="<?php echo $_item->getId() ?>" /> 
          <?php endif; ?> 
         <?php endif; ?> 
                 <?php if ($this->helper('wishlist')->isAllow()) : ?> 
          <a href="<?php echo $this->getAddToWishlistUrl($_item) ?>" class="pull-right" title="<?php echo $this->__('Add to Wishlist') ?>" rel="tooltip"><span class="icon-check"></span></a> 

<form action="<?php echo $this->getAddToCartUrl($_item) ?>" method="post"> 
     <fieldset> 
     <p class="product-name"><?php echo $this->__('Quantity:'); ?></p> 
    <select name="qty" class="span1"> 
    <?php $i = 1 ?> 
    <?php do { ?> 
    <option value="<?php echo $i?>"> 
     <?php echo $i?> 
     <?php $i++ ?> 
    </option> 
    <?php } while ($i <= (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($_item)->getMaxSaleQty()) ?> 
</select> 

      <button title="<?php echo $this->__('Add to Cart') ?>" class="btn btn-danger" onclick="productAddToCartForm.submit(this)"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button> 

       <?php else: ?> 
      <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p> 
     </fieldset> 
</form> 
         <?php endif; ?> 
         <?php echo $this->getPriceHtml($_item, true, '-related') ?> 
         <a href="<?php echo $_item->getProductUrl() ?>"><?php echo $this->htmlEscape($_item->getName()) ?></a> 


        </label> 
        </div> 
       </div> 
     <?php endforeach ?> 
     </div> 
    </div> 
    <script type="text/javascript"> 
    $j(document).ready(function() { 
     $j(".fancybox").fancybox(); 
    }); 
</script> 

<script type="text/javascript"> 
    //<![CDATA[ 
     var productAddToCartForm = new VarienForm('product_addtocart_form'); 
     productAddToCartForm.submit = function(button, url) { 
      if (this.validator.validate()) { 
       var form = this.form; 
       var oldUrl = form.action; 

       if (url) { 
        form.action = url; 
       } 
       var e = null; 
       try { 
        this.form.submit(); 
       } catch (e) { 
       } 
       this.form.action = oldUrl; 
       if (e) { 
        throw e; 
       } 

       if (button && button != 'undefined') { 
        button.disabled = true; 
       } 
      } 
     }.bind(productAddToCartForm); 

     productAddToCartForm.submitLight = function(button, url){ 
      if(this.validator) { 
       var nv = Validation.methods; 
       delete Validation.methods['required-entry']; 
       delete Validation.methods['validate-one-required']; 
       delete Validation.methods['validate-one-required-by-name']; 
       if (this.validator.validate()) { 
        if (url) { 
         this.form.action = url; 
        } 
        this.form.submit(); 
       } 
       Object.extend(Validation.methods, nv); 
      } 
     }.bind(productAddToCartForm); 
    //]]> 
    </script> 
</div> 
<?php endif ?> 
+1

看起來您似乎正在爲每個產品創建表單。嘗試將表單移出foreach循環。這可能有助於解決您的問題。 –

+0

@dasfisch謝謝你的迴應...我其實需要添加到購物車按鈕的'foreach'產品,但目前我只能添加一個產品到購物車。如果我將表單從foreach中提取出來,我不知道如何才能將單獨的產品添加到購物車中 – user1704524

+0

只需要清楚,您希望按鈕能夠通過一次點擊添加每種形式的產品,對嗎? –

回答

0

得到這個工作,任何人嘗試添加相關CMS頁上的產品使用此代碼:

<?php if($this->getItems()->getSize()): ?> 
<div class="block block-related"> 
    <div class="block-title"> 
     <strong><span><?php echo $this->__('Related Products') ?></span></strong> 
    </div> 
    <div class="block-content"> 
     <p class="block-subtitle"><?php echo $this->__('Check items to add to the cart or add to your wishlist') ?>&nbsp;<br /></p> 
     <div class="form-horizontal"> 
     <?php foreach($this->getItems() as $_item): ?> 
      <div class="control-group"> 
        <label for="related-checkbox<?php echo $_item->getId() ?>" class="control-label"> 
         <a class="fancybox static-thumbs pull-left" href="<?php echo $this->helper('catalog/image')->init($_item, 'small_image')->resize(500, 450); ?>" title="<?php echo $this->htmlEscape($_item->getName()) ?>" ><img src="<?php echo $this->helper('catalog/image')->init($_item, 'small_image')->resize(135, 135) ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($_item->getName()) ?>" /></a> 
        </label> 
<div class="controls"> 
<label class="checkbox"> 
     <?php if(!$_item->isComposite() && $_item->isSaleable()): ?> 
      <?php if (!$_item->getRequiredOptions()): ?> 
       <input type="checkbox" class="checkbox related-checkbox" id="related-checkbox<?php echo $_item->getId() ?>" name="related_products[]" value="<?php echo $_item->getId() ?>" /> 
     <?php endif; ?> 
    <?php endif; ?> 
<?php if ($this->helper('wishlist')->isAllow()) : ?> 
    <a href="<?php echo $this->getAddToWishlistUrl($_item) ?>" class="pull-right" title="<?php echo $this->__('Add to Wishlist') ?>" rel="tooltip"><span class="icon-check"></span></a> 

<p class="product-name span6"> 
<a href="<?php echo $_item->getProductUrl() ?>" class="product-title"><?php echo $this->htmlEscape($_item->getName()) ?></a> 
<br /> 
    <?php echo nl2br($this->getProduct()->getDescription()) ?> 
</p> 
<form action="<?php echo $this->getAddToCartUrl($_item) ?>" method="post"> 

<fieldset> 
    <label class="product-name"><?php echo $this->__('Quantity:'); ?></label> 
    <select name="qty" class="span1"> 
    <?php $i = 1 ?> 
    <?php do { ?> 
    <option value="<?php echo $i?>"> 
     <?php echo $i?> 
     <?php $i++ ?> 
    </option> 
    <?php } while ($i <= (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($_item)->getMaxSaleQty()) ?> 
</select> 
<button class="btn btn-danger"><span><?php echo $this->__('Add to Cart') ?></span></button>    
</fieldset> 

</form> 
<?php endif; ?> 
<?php echo $this->getPriceHtml($_item, true, '-related') ?> 
</label> 

</div> 
    </div> 
    <hr /> 
     <?php endforeach ?> 
     </div> 
    </div> 
相關問題