产品特价不显示在 Magento

Posted

技术标签:

【中文标题】产品特价不显示在 Magento【英文标题】:Product Special Price does not display in Magento 【发布时间】:2014-06-30 21:09:12 【问题描述】:

我遇到了这个问题。虽然我得到了解决方案,但我仍然想知道它为什么会抓住它。 我有一个桌面版和移动版的 Magento 网站。 在类别页面上,它显示了您所知道的产品列表。现在,有一个问题

我得到每个产品的结构如下:

Product Name
Image
Regular Price
Special Price

手机版可以,但桌面版没有特价。 我曾经编码

"$product->getSpecialPrice()" 

得到它但不工作。 这些版本只是前端的不同,后端的所有功能都是一样的。没错,商品数据是由同一个函数检索的

getLoadedProductCollection()

Magento Core 的产品列表块。所以,我真的不明白为什么我可以在移动版中通过拨打$product->getSpecialPrice()获得特价的价值,而在桌面版中却不行。

请帮帮我,谢谢。

【问题讨论】:

这个问题似乎是题外话,因为它属于Magento 这真的属于 Magento 吗?如果它导致 2 个不同的产品之间是可以的,但这里是唯一一个产品的 2 个不同视图之间。请告诉我更多,迈克。非常感谢。我真的很想知道。 函数$product->getSpecialPrice()独立于移动/桌面版本。 @Slimshadddyyy:是的,我想是的,但我不知道它在哪里。我追踪了代码,但无论是移动设备还是桌面设备,它们都是相同的。 【参考方案1】:
 <?php
include_once 'app/Mage.php';
Mage::app();
Mage::getSingleton('core/session', array('name' => 'frontend'));

$_productCollection = Mage::getResourceModel('catalogsearch/advanced_collection')
            ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
            ->addMinimalPrice()
            ->addStoreFilter();

Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($_productCollection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($_productCollection);


$todayDate = date('m/d/y');
$tomorrow = mktime(0, 0, 0, date('m'), date('d')+1, date('y'));
$tomorrowDate = date('m/d/y', $tomorrow);

$_productCollection->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
    ->addAttributeToFilter('special_to_date', array('or'=> array(
    0 => array('date' => true, 'from' => $tomorrowDate),
    1 => array('is' => new Zend_Db_Expr('null')))
    ), 'left');

foreach($_productCollection as $_product)
    if($_product->getData('special_price')!=null)
        echo '<img src="'.$this->helper('catalog/image')->init($_product, 'thumbnail')->resize(75).'"  /><br />';
        echo $_product->getName().'<br />';

    $specialPrice = $_product->getData('special_price');
    $orignalPrice = $_product->getData('price');
        echo number_format($specialPrice, 2)."<br/>";
        echo number_format($orignalPrice, 2)."<br/>";                    
        echo '<a href="http://www.yourwebsite.com/magento/checkout/cart/add?product='.$_product->getId().'&qty;=1">Add To Cart</a><br />';
    

?> 

【讨论】:

嗨,savan,感谢您的编码,但我想知道移动版和桌面版不同的原因?它不会覆盖任何后端代码。所以这里不需要调用另一个函数来获取特价产品的集合。【参考方案2】:

只需使用 getFinalPrice 而不是 getSpecialPrice。 :D

【讨论】:

以上是关于产品特价不显示在 Magento的主要内容,如果未能解决你的问题,请参考以下文章

Magento:从另一家商店获取产品价格?

Magento:不显示有运费的免费产品的付款方式

magento后台设置好产品分类及添加产品后前台没有显示出来,请教是怎么回事

如果产品缺货,则显示属性 Magento

为啥我的属性在 Magento 1.9.1.0 前端显示位置不正确?

Magento 2.4.3 产品未显示在订单确认邮件中