0

谁能帮我解决这个php代码难题?(郑重声明,我不是 php 程序员)

我想显示一个缩略图(用于销售订单屏幕和新订单邮件)

简单的产品不是问题。我有这个代码:

<?php //added for sending image with order
$product = Mage::getModel('catalog/product')
->setStoreId($_item->getOrder()->getStoreId())
->load($_item->getProductId());     ?>
<p align="center"><img src="<?php echo Mage::helper('catalog/image')->init($product, 'small_image')->resize(135); ?>" width="135" height="135" alt="" /></p>

这工作正常。变得困难的地方是当我有一个与可配置产品相​​关的简单产品时。可配置产品的“孩子”不包含图像,只有可配置产品。(见截图,第一个产品是带有图像的可配置产品,其余的是没有照片的简单产品“孩子”)

在此处输入图像描述

使用上面的代码,我只能看到图像的占位符。如何调用可配置产品的图像?

我在专用服务器上使用 magento 1.6.2.0(在 ubuntu 10.04lts 服务器上运行)

4

1 回答 1

1

我刚刚解决了这个问题。这是我的解决方案

我遇到的问题是,像你一样,图像没有链接到可配置父级的子产品(你可以上传这些产品的图像......)。我采取了将图像添加到驱动父产品变化的属性的方法,并为它们输出图像。

我的解决方案绑定到可配置的.phtml 模板,并使用 JS 提取适当的细节(Magento 使用大量 JS 来表示可配置产品,与捆绑包不同)。

祝你好运。这是一种痛苦。

(以及为什么 Magento 不支持开箱即用,我永远不会知道。对我来说似乎是必不可少的功能......)

更新


嗯 - 这真的取决于你想要做什么。如果您只想为每个子产品提供一张图片,您可以尝试以下操作:

$spImages = array();
foreach ($this->getAllowProducts() as $_sp) {
    $spImages[$_sp->getId()] = 
        (string)$this->helper('catalog/image')
            ->init($_sp, 'small_image')
            ->resize(40,40);
}

假设您已为每个子产品上传了一张图片。

但是,正如我所指出的,我对每个属性选项的样本感兴趣,这不会满足我的需要。这就是我将图像与属性本身相关联的原因。

于 2012-08-06T19:08:59.290 回答