我有一个卷轴显示当前正在销售的产品集合,我使用以下内容调用:
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('visibility', $visibility)
->setPageSize(4) // Only return 4 products
->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
->addAttributeToFilter('special_to_date', array('or'=> array(
0 => array('date' => true, 'from' => $todayDate),
1 => array('is' => new Zend_Db_Expr('null')))
), 'left')
->addAttributeToSort('special_from_date', 'desc');
$_productCollection->load();
Run Code Online (Sandbox Code Playgroud)
然后我运行foreach来获得个别产品:
foreach ($_productCollection as $_product)
Run Code Online (Sandbox Code Playgroud)
一切正常,除了价格,我通常会打电话使用
$this->getPriceHtml($_product, true)
Run Code Online (Sandbox Code Playgroud)
然而,这给了我一个空白.如果我做一个var_dump,我可以看到原价和特价都可用,那为什么这不起作用呢?我在我的主页模板上使用完全相同的代码,我通过主页CMS调用,价格显示正常(正常价格划掉并显示特价).
使用$ _product-> getFinalPrice()工作正常,但只给我最终的"特殊"价格,并没有显示原始价格.
我可能在xml布局中遗漏了一些需要使用getPriceHtml显示价格的东西吗?
Tyr*_*nin 32
我的同事建议使用这种Magento友好方法在任何地方获取价格html:
<?php $_product = Mage::getModel('catalog/product')->load($product->getId());
$productBlock = $this->getLayout()->createBlock('catalog/product_price');
echo $productBlock->getPriceHtml($_product); ?>
Run Code Online (Sandbox Code Playgroud)
如果您已经在使用已加载的产品,那么您将不需要第一行,但我的产品来自集合,因此这是必要的.
Jon*_*Day 21
问题是getPriceHtml()函数是在Mage_Catalog_Block_Product块中定义的,而不是标准Mage_Core_Block_Template.您需要确保您的块扩展了Product块,或者您可以通过以下方式在布局中实现:
<block type="catalog/product" name="blockname" template="path/to/template.phtml">
Run Code Online (Sandbox Code Playgroud)
我没有测试过,但它应该工作.
你也可以试试这个:
<?php echo Mage_Catalog_Block_Product::getPriceHtml($_product, true) ?>
Run Code Online (Sandbox Code Playgroud)
哪里$_product涉及产品对象.
| 归档时间: |
|
| 查看次数: |
39732 次 |
| 最近记录: |