4

我正在与一家在 Magento EE 1.12 上运行的商店合作。有一天,我们打开商店,发现所有可配置的产品都从类别列表中消失了。我检查了加载产品的 SQL,发现与catalog_product_index_price的内部连接使它返回空。

我打开表格发现,虽然这些可配置产品的子简单产品仍在表中,但可配置产品却没有。

什么可能导致这个问题?

4

4 回答 4

5

我在拆除核心索引器后找到了解决方案。我发现价格索引的工作原理是先运行股票索引器,然后再运行价格索引器。问题出在可配置产品股票索引器之一中。

该索引器将存储在 cataloginventory_stock_status_idx 中的可配置产品的 stock_status 呈现0。然后可配置产品价格索引器进入并发现这些产品没有可用库存,因此它不会重新索引。

所以解决方法是:

在 Mage_CatalogInventory_Model_Resource_Indexer_Stock_Configurable 这一行

$adapter->getCheckSql("{$psCond} AND le.required_options = 0", 'i.stock_status', 0);

应该

$adapter->getCheckSql("{$psCond}", 'i.stock_status', 0);

值得怀疑的是,为什么 required_options=0 首先存在。对我来说意义不大

于 2013-07-05T15:26:15.133 回答
2

当您禁用产品并随后运行价格索引器时,会发生完全相同的事情。Magento 首先计算股票指数,填充表cataloginventory_stock_status_idx。如果产品被禁用,它将添加stock_status == 0。从那时起,这些产品将不再计算价格指数。

于 2016-02-24T14:59:05.040 回答
1

该文件位于 app/code/core/Mage/CatalogInventory/Model/Resource/Stock/Configurable.php 下。它根据PHP-FIG PSR0以类命名。

于 2014-09-01T02:32:09.267 回答
0

尽管这是一个老问题,但我会留下一个可能的解决方案来解决似乎是核心问题的问题。

问题在于可配置属性的backend_type字段,它必须始终是 type int,而不是varchar或者其他。 

来源:  https ://magento.stackexchange.com/a/97328/47383

于 2019-06-02T18:46:20.763 回答