Magento - 列出没有foreach的产品系列

时间:2014-02-05 01:04:37

标签: magento collections product

我有一个装有6种产品的产品系列。我需要在没有foreach的情况下列出这些产品,因为每个产品都有不同的布局结构。 如何在foreach之外调用每个产品?

我的代码是:

<?php

  $produtos = array(1115,1105,1019,1017,1013,1011);
  $_productCollection=$this->getLoadedProductCollection();
  $_productCollection = clone $this->getLoadedProductCollection();
  $_productCollection->clear()
                     ->addIdFilter($produtos)
                     ->load();
  $_helper = $this->helper('catalog/output');
?>

变量$ produtos是一个数组,其中包含我想要的产品ID

然后,我需要为每个产品属性设置变量。我这样做:

<?php foreach ($_productCollection as $_product): ?>
    <?php 
        if($_product->getId() == $produtos[0]){
            $productName1 = $_helper->productAttribute($_product, $_product->getName(), 'name'); 
            $productImage1 = '<img border="0" src=".'echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(143,215);'." />';
            $precoCru1 = $_product->getFinalPrice(); $productPrice1 = Mage::helper('core')->currency($precoCru1, true, false);
            $productUrl1 = $_product->getProductUrl();
        }

        elseif($_product->getId() == $produtos[1]){
            $productName2 = $_helper->productAttribute($_product, $_product->getName(), 'name'); 
            $productImage2 = '<img border="0" src=".'echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(143,215);'." />';
            $precoCru2 = $_product->getFinalPrice(); $productPrice1 = Mage::helper('core')->currency($precoCru1, true, false);
            $productUrl2 = $_product->getProductUrl();                      
        }
    ?>                  
<?php endforeach; ?>

产品名称,网址和价格正常,但图片没有。当我回显每个产品图片时,它给了我相同的网址

2 个答案:

答案 0 :(得分:3)

你无法完全避免使用foreach,因为这不是编程的工作方式,而是尝试一下

$array = array();
$c=1;
foreach($product_collection as $product)
{
    $array['product_'.$c] = $product;
    $c++;
}

您将能够参考每个产品

var_dump($array['product_1']->getData());
var_dump($array['product_2']->getData());

如果你真的想要混淆下一个程序员,请尝试上面的代码,但是这样做

extract($array);
var_dump($product_1->getData());

extract函数会将数组的每个键导出为PHP变量。

答案 1 :(得分:0)

您可以尝试获取这些项目,然后将它们用作常规数组,并按索引引用元素:

$items = $collection->getItems();
$first = $items[0];
$second = $items[1];

或者如果您只需要第一个:

$first = $collection->getFirstItem();

查看lib / Varien / Data / Collection.php