gpt4 book ai didi

magento - 可配置产品保存后获取属于可配置产品的简单产品

转载 作者:行者123 更新时间:2023-12-01 22:58:19 33 4
gpt4 key购买 nike

在magento中,可以通过使用以下调用来获取与可配置产品关联的简单产品:

$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null, $product);

我试图在保存可配置产品后调用此函数,以便我可以获得它使用的简单产品的新列表。因此,我通过由 catalog_product_save_after 事件触发的方法进行上述调用。但是,在调用之后,$childProducts 会在保存操作之前而不是之后存储与 $product 关联的简单产品。

保存操作后如何获取与$product关联的简单产品?

提前致谢,如有任何建议,我们将不胜感激。

最佳答案

Magento 的 OOP 系统非常好,这种优点有时会给那些尚未深入了解其结构的人带来问题。

如果您密切关注“Mage_Catalog_Model_Product_Type_Configurable”类中的“getUsedProducts()”方法,您会看到有一些“if”提供的逻辑,以及其属性的用法(例如“_usedProducts”、“_configurableAttributes”)。这些阻碍你得到实际的结果,但问题不是 Magento 的问题,而是因为缺乏 Magento 文档。

让我向您介绍一下此方法的前几行:-

Varien_Profiler::start('CONFIGURABLE:'.__METHOD__);
if (!$this->getProduct($product)->hasData($this->_usedProducts)) {
if (is_null($requiredAttributeIds) and is_null($this->getProduct($product)->getData($this->_configurableAttributes))) {
// If used products load before attributes, we will load attributes.
$this->getConfigurableAttributes($product);
// After attributes loading products loaded too.
Varien_Profiler::stop('CONFIGURABLE:'.__METHOD__);
return $this->getProduct($product)->getData($this->_usedProducts);
}
....

此方法有 2 个参数 - “$requiredAttributeIds”(可配置属性 ID)和“$product”(可配置产品对象)。

调用此方法时,您为参数“$requiredAttributeIds”传递“null”,但提供了正确的可配置产品对象“$”产品”。

此类有一个属性“_usedProducts”(用于维护子简单产品的数据),该属性是为每个可配置产品对象设置的。如果之前已设置该值,那么 Magento 将返回已经可用的值。这是您在更新可配置产品之前获取子产品的主要原因。

因此,您可以清除完整的缓存存储,并刷新所有缓存进程。也许你的结果会起作用,因为 Magento 在内部将所有这些使用过的产品数据存储在缓存中。

希望有帮助。

关于magento - 可配置产品保存后获取属于可配置产品的简单产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6582866/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com