- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
编辑:基本上,我的问题是我需要在类别 View 中获取可配置产品的 minimal_price。以前,这是通过使用
$_product = $this->getProduct();
$_product->getMinimalPrice();
但是,它不再起作用了。我注意到,当它仍然有效时,倾销 $_product
将包含“minimal_price”。现在,情况不再如此了。有谁知道可能是什么原因吗?
旧的:我目前正在为一个非常奇怪的错误而苦苦挣扎。我更新到 magento 1.9 但并非一切都按预期工作。类别页面变得非常慢。所以我再次降级到 1.8,这在我们的测试开发服务器上运行良好,但现在可配置产品的价格不会再显示在类别站点上。即使在干净的 magento 安装 1.7(使用相同的数据库!)上,它也不起作用。
我发现,首先,price.phtml 在 Magento 1.9 中发生了变化,并添加了两个调用,这导致加载时间增加:
$_convertedFinalPrice = $_store->roundPrice($_store->convertPrice($_product->getFinalPrice()));
$_specialPriceStoreLabel = $this->getProductAttribute('special_price')->getStoreLabel();
我的主要问题是不再显示价格。我注意到以下几点:
当我转储 $_product->debug();
时,它不再包含 minimal_price。这很可能是 getMinimalPrice()
不再工作的原因。
奇怪的是,就像我在另一个测试开发站点上所说的那样,它仍在工作并且 $_product->debug();
仍然包含 minimal_price。
有人能解释为什么在一个页面上仍然包含 minimal_price,但在另一个网站上却没有吗?
谢谢
最佳答案
我更深入地研究了 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"); $minimal = $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:
$this->setProduct(Mage::getModel("catalog/product")->getCollection() ->addAttributeToSelect(Mage::getSingleton("catalog/config")->getProductAttributes()) ->addAttributeToFilter("entity_id", $this->getProduct()->getId()) ->setPage(1, 1) ->addMinimalPrice() ->addFinalPrice() ->addTaxPercents() ->load() ->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.
关于php - $_product 不包含所有需要的数据 (minmal_price),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24558731/
编辑:基本上,我的问题是我需要在类别 View 中获取可配置产品的 minimal_price。以前,这是通过使用 $_product = $this->getProduct(); $_product
我是一名优秀的程序员,十分优秀!