2011-08-18 45 views
1

如何在不更改(template/catalog/product/view.phtml)中使用的价格模板的情况下向类别视图(template/catalog/product/list.phtml)添加新的价格模板)?这两个文件都使用template/catalog/product/price.phtml,但我需要在template/catalog/product/list.phtml中使用单独的价格模板。Magento separate price.phtml

+0

这里有一个类似的问题问及与回答很好的XML解决方案,可能会有所帮助:http://stackoverflow.com/questions/2911615/how-can-i-add-a-new-price-template-to-magento – ccondrup

回答

1

复制app/code/core/Mage/Catalog/Block/Product.php到app/code/local/YourModule/Catalog/Block/Product.php(关于制作你自己的模块的细节,你应该看看其他的文件)。

在复制的文件,约61行,改变

public function getPriceHtml($product) 
    { 
     $this->setTemplate('catalog/product/price.phtml'); 
     $this->setProduct($product); 
     return $this->toHtml(); 
    } 

public function getPriceHtml($product) 
    { 
     $this->setTemplate('catalog/product/your_price.phtml'); 
     $this->setProduct($product); 
     return $this->toHtml(); 
    } 

你可以自定义的在your_price.phtml价格的看法。

+3

永远不要触摸核心文件!下次升级时将会覆盖这些更改。将price.phtml模板文件复制到自定义主题并在其中进行编辑会更好。 无论如何,问题是如何更改产品列表页面的模板,而不是每个页面。 – Simon

+0

@Simon,是的,你说得对,我为前任建议表示歉意,所以让它成为本地块是更合适的方法。 –

+0

我已更新答案,请按照新的答案。 –

2

它不是一个非常好的解决方案,但你可以price.phtml复制到您的自定义主题,然后检查你是否是一个分类页面上:

$handles = $this->getLayout()->getUpdate()->getHandles(); 
if (array_search('catalog_category_view', $handles)) { 
    echo 'here you can do other things'; 
}