$ _product不包含所有需要的数据(minmal_price)

时间:2014-07-03 16:13:36

标签: php magento configurable-product

编辑: 基本上,我的问题是我需要在类别视图中获取可配置产品的minimal_price。以前,这通过使用

起作用
$_product = $this->getProduct();

$_product->getMinimalPrice();

然而,它不再起作用了。我注意到,当它仍然有效时,转储$_product将包含' minimal_price'。现在,情况已经不是这样了。 有谁知道原因是什么?

OLD: 我目前正在努力解决一个非常奇怪的错误。我更新到magento 1.9但不是一切都按预期工作。类别页面变得非常慢。所以我再次降级到1.8,这在我们的测试开发服务器上运行良好,但现在可配置产品的价格在类别网站上不再显示。即使在干净的magento安装1.7(使用相同的数据库!)它也无法正常工作。

我发现的是,首先,在Magento 1.9中更改了price.phtml并增加了两个调用,这导致了加载时间的增加:

$_convertedFinalPrice = $_store->roundPrice($_store->convertPrice($_product->getFinalPrice()));
$_specialPriceStoreLabel = $this->getProductAttribute('special_price')->getStoreLabel();

对我来说,主要问题是价格不再显示。我注意到以下几点:

当我转储$_product->debug();时,它不再包含minimal_price。这很可能是getMinimalPrice()不再起作用的原因。

奇怪的是,就像我在不同的测试开发网站上所说的那样,它仍在工作,$_product->debug();仍然包含minimal_price。

是否有人解释为什么在一个页面上仍然包含minimal_price,但在不同的网站上却没有?

由于

2 个答案:

答案 0 :(得分:0)

我更深入地了解了Magento的代码,并追踪了Magento如何加载产品列表的产品。查看产品列表时,产品集合由模型Mage_Catalog_Model_Layer加载,它通过向集合的SQL添加连接,将最小的价格和其他内容添加到集合中的产品,但我还没有找到同样的模型单品而不是收藏品。

Because I don’t want to use a direct SQL query, I checked out the CatalogIndex module, but that module seems not to be working at all because all its indexing tables are empty or even corrupted.
  

$ data_grouped = Mage :: getModel(“catalogindex / data_grouped”); $最小   = $ data_grouped-> getMinimalPrice(array($ _ product-> getId()),Mage :: app() - > getStore());

looked good at first but it gives me the following error:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'catalog_product_index_price.value' in 'field list'

The CatalogIndex module is either deprecated or I’m just too stupid to enable it.

However, I have now created a workaround in my price.phtml template, which uses the same method to retrieve the minimal price and tax percents as the product list does: At the beginning of the template I added the following:
  

$这 - > setProduct(法师:: getModel( “目录/产品”) - > getCollection()               - > addAttributeToSelect(法师:: getSingleton( “目录/配置”) - > getProductAttributes())                - > addAttributeToFilter(“entity_id”,$ this-> getProduct() - > getId())                - > setPage(1,1)                - > addMinimalPrice()                - > addFinalPrice()                - > addTaxPercents()                - >负载()                - > getFirstItem()       );

which may not be the perfect solution, but it does the job and it does it a little cleaner than iterating over all child products and finding the minimal price that way.

答案 1 :(得分:0)

请记住启用平面目录和平面类别;)