Magento单独price.phtml

Magento单独price.phtml,magento,block,php,Magento,Block,Php,如何在不更改(template/catalog/product/view.phtml)中使用的价格模板的情况下,将新的价格模板添加到类别视图(template/catalog/product/list.phtml)?这两个文件都使用模板/catalog/product/price.phtml,但我需要在模板/catalog/product/list.phtml中使用一个单独的价格模板。将app/code/core/Mage/catalog/Block/product.php复制到app/code

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

将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();
    }


您可以在\u price.phtml中自定义价格视图。

这不是一个很好的解决方案,但您可以将price.phtml复制到您的自定义主题中,然后检查您是否位于具有以下内容的类别页面上:

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

不要触摸核心文件!这些更改将在下次升级时被覆盖。将price.phtml模板文件复制到自定义主题并在其中进行编辑会更好。不管怎么说,问题是如何更改产品列表页面的模板,而不是每个页面的模板。@Simon,是的,你是对的,我为之前的建议道歉,因此,将其设置为本地块是一种更合适的方法。更好:-)尽管我认为这并不能回答这个问题,因为它会更改所有区域的模板…这里有一个类似的问题,可以用一个很好的xml解决方案来问和答:
$handles = $this->getLayout()->getUpdate()->getHandles();
if (array_search('catalog_category_view', $handles)) {
    echo 'here you can do other things';
}