编辑: 基本上,我的问题是我需要在类别视图中获取可配置产品的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,但在不同的网站上却没有?
由于
答案 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)
请记住启用平面目录和平面类别;)