Magento - 从orderemail

时间:2017-01-26 08:36:55

标签: php magento magento-1.9

我有一个关于从可配置产品中获取属性的问题。因为我们稍微清理了我们的目录并删除了一些产品,包括一些可配置产品及其相关产品,我们无法发送任何包含已删除产品相关订单的电子邮件。通常,我们会在电子邮件中显示可配置产品的属性文本。在我的示例中,我有一个可配置的产品,其属性为size_attribute。订单中的产品具有例如20x20cm的值。

通常我会得到如下属性值:

../模板/电子邮件/顺序/物品/订单/ default.phtml

$_simple = Mage::getModel('catalog/product')->loadbyAttribute('sku',$_item->getSku());

$attr = $_simple->getResource()->getAttribute('size_attribute');
$attribute_code = Mage::getModel('eav/entity_attribute')->load($attr->getAttributeId())->getAttributeCode();

$attribute_text = $_simple->getAttributeText($attribute_code)

现在我遇到的问题是这一行会失败导致产品在我们的数据库中不再存在:

Mage::getModel('catalog/product')->loadbyAttribute('sku',$_item->getSku())

我知道Magento会将每个订购项目的所有信息复制到一个单独的表格中,从目录中删除产品时无法触及。

不幸的是,我在互联网上阅读的大多数解决方案都是从上面这一行开始的。

那么有没有办法以另一种方式获取属性文本?

1 个答案:

答案 0 :(得分:0)

显然,无法加载已删除的产品。

这里的问题是由于首先执行错误导致的,在处理订单时,不应从产品中提取数据,因为属性值可能会发生变化。相反,应创建新的sales/quote_item属性,其中产品的价值将在添加到购物车的过程中复制(可能在sales_quote_item_set_product事件上)。