Magento 获取未加载所有属性的相关产品

Magento get related products not having all attributes loaded

我在接手一个项目,看到之前的开发者添加了自定义相关的产品关联。所以他实现了一个函数来让关联的集合看起来像这样

/**
 * Retrieve collection CustomRelated product
 *
 * @return Mage_Catalog_Model_Resource_Product_Link_Product_Collection
 */
public function getCustomRelatedProductCollection()
{
    $collection = $this->getLinkInstance()->useCustomRelatedLinks()
        ->getProductCollection()
        ->setIsStrongMode();
    $collection->setProduct($this);
    return $collection;
}

然后在 phtml 文件中,他是这样调用的

$upsell_products = $_product->getCustomRelatedProductCollection();

然后他在 foreach 中使用该集合,集合中的每个元素都使用模型 'catalog/product',但不知何故它没有加载足够的属性,如价格和名称

只有当我像这样再次调用加载函数时,它才会加载所有属性

Mage::getModel('catalog/product')->load($p->getId())

我不想这样做,因为重新加载模型毫无意义,我还是 Magento 的新手,所以我不确定如何制作上面的 get 集合来完全加载产品模型,任何想法?

您可以加​​载需要的属性(名称、价格),如下所示。

public function getCustomRelatedProductCollection()
{
    $collection = $this->getLinkInstance()->useCustomRelatedLinks()
        ->getProductCollection()
        ->addAttributeToSelect(array("name", "price")) 
        ->setIsStrongMode();
    $collection->setProduct($this);
    return $collection;
}

//我在你的代码中添加了新行。请立即查看。

public function getCustomRelatedProductCollection()
{
    $collection = $this->getLinkInstance()->useCustomRelatedLinks()
        ->getProductCollection()
        ->setIsStrongMode();
    $collection->setProduct($this);
    $collection->addAttributeToSelect('*'); //New line added by me.
    return $collection;
}