2016-06-06 1 views
0

Я пытаюсь получить информацию о продукте на моей странице успешной проверки в Magento 1.9, но я не знаю, почему я получаю тот же продукт в течение двух раз. Это то, что я добавляю в приложение/дизайн/интерфейс/базы/по умолчанию/шаблон/Checkout/success.phtml файлПроблема с небольшим выпуском на странице успеха Magento

<tbody> 
     <?php 
     foreach ($items as $item): 
      $_product = Mage::getModel('catalog/product')->load($item->getProductId()); 
      $productType = $_product->getTypeId(); 
      $entityId = $_product->getEntityId(); 
      $options = $item->getProductOptions(); 
      if ($productType == "bundle") { 
       $bundled_product = new Mage_Catalog_Model_Product(); 
       $bundled_product->load($entityId); 
       $selectionCollection = $bundled_product->getTypeInstance(true)->getSelectionsCollection(   $bundled_product->getTypeInstance(true)->getOptionsIds($bundled_product), $bundled_product); 
       $bundled_items = array(); 
       foreach ($selectionCollection as $option) { 
        $bundled_items[] = $option->product_id; 
       }?> 
       <tr> 
        <td rowspan="1"> 
         <img class="product_img" src="<?php echo Mage::helper('catalog/image')->init($_product, 'thumbnail')->resize(75); ?>" alt="product-img" /> 
         <?php echo $item->getName(); 
         $customOptions = $options['options']; 
         if (!empty($customOptions)) { 
          foreach ($customOptions as $option) {?> 
           <span class="bottom-align"> 
            <?php 
            echo '<b>' . $option['label'] . '</b> :'; 
            echo $optionValue = $option['value']; 
            ?> 
           </span> 
           <?php 
          } 
         } 
         ?> 
        </td> 
        <td><?php echo $this->helper('checkout')->formatPrice($item->getPrice()); ?></td> 
        <td><?php echo $item->getQtyOrdered(); ?></td> 
        <td><?php echo $item->getSku(); ?></td> 
        <td><?php echo $this->helper('checkout')->formatPrice($item->getRowTotal()); ?></td> 
       </tr> 
       <?php 
      } else if (in_array($entityId, $bundled_items)) { 

      } else { 
       ?> 
       <tr> 
        <td> 
         <img class="product_img" src="<?php echo Mage::helper('catalog/image')->init($_product, 'thumbnail')->resize(75); ?>" alt="product-img" /> 
         <?php 
         echo $item->getName(); 

         $customOptions = $options['options']; 
         if (!empty($customOptions)) { 
          foreach ($customOptions as $option) { 
           ?> 
           <span class="bottom-align"> 
            <?php 
            echo '<b>' . $option['label'] . '</b> :'; 
            echo $optionValue = $option['value']; 
            ?></span>         
           <?php 
          } 
         } 
         ?> 
        </td> 
        <td><?php echo $this->helper('checkout')->formatPrice($item->getPrice()); ?></td> 
        <td><?php echo $item->getQtyOrdered(); ?></td> 
        <td><?php echo $item->getSku(); ?></td> 
        <td><?php echo $this->helper('checkout')->formatPrice($item->getRowTotal()); ?></td> 
       </tr> 
       <?php 
      } 
      ?> 
     <?php endforeach ?> 
    </tbody> 

enter image description here

ответ

1

Это ожидаемое поведение. В базу данных для составных продуктов добавлено несколько строк: пучки, конфигураторы. В вашем случае первый - это сам продукт пакета, второй - выбранный простой продукт. Вы можете заменить } else { на } elseif (!$item->getParentId()) { в вашем шаблоне, чтобы пропустить дочерний простой продукт.