从特定地方加载模块(magento)

时间:2011-09-13 15:05:53

标签: php xml magento

我正在尝试覆盖Magento平台上的核心模块。

绝对没问题。 我为它制作了一个简单的模块,它默认通过etc / modules / ... xml文件加载。但我想要的是:

仅在类别页面上调用模块。

有人知道是否可以从模板文件中调用(定义,设置)模块?

如何才能将其加载到特定模板文件中,或仅加载到该类别页面上?


我目前正在尝试解决问题,但仍然无法绕过正确的代码。 我认为if / else语句适用于核心模块currency.php,但也许你们可以帮助我。

* 这就是我的想法,看到的顺序不是代码;)*

<?php
class MyCompany_ConstPrice_Model_Currency extends Mage_Directory_Model_Currency
{
public function __A_NAME_() 
if(Mage::app()->getFrontController()->getRequest()->getRouteName() == 'catalog') :
elseif:
$this->_redirectReferer(Mage::getBase()); 

Rest of code....
?>

1 个答案:

答案 0 :(得分:2)

要提供覆盖,首先需要重写类别名。

<config>
    <global>
        <models>
            <directory>
                <rewrite>
                    <currency>MyCompany_ConstPrice_Model_Currency</currency>
                </rewrite>
            </directory>
        </models>
    </global>
</config>

现在你可以进行实际覆盖了。

<?php

class MyCompany_ConstPrice_Model_Currency extends Mage_Directory_Model_Currency
{

    public function getCode()
    {
        if ((Mage::app()->getRequest()->getRouteName() == 'catalog')
         && (Mage::app()->getRequest()->getControllerName() == 'category')) {
            // return something here...
        }
        // else not a category page
        return parent::getCode();
    }
}

注意:我使用getCode()作为例子,因为它是第一个声明的函数。