Magento 1.9 扩展核心 class

Magento 1.9 extend core class

我想扩展核心产品 class 并添加一些功能。

我制作了文件app\code\local\ast\Catalog\etc\config.xml

<?xml version="1.0"?>
<config>
    <modules>
         <ast_Catalog>
            <version>0.0.1</version>
        </ast_Catalog>
    </modules>
    <global>
        <models>
            <catalog>
                <rewrite>
                    <product>ast_Catalog_Model_Product</product>
                </rewrite>
            </catalog>
        </models>
   </global>
</config>

第二个文件app\etc\modules\ast_Catalog.xml

<?xml version="1.0"?>
<config>
     <modules>
        <ast_Catalog>
            <active>true</active>
            <codePool>local</codePool>
        </ast_Catalog>
     </modules>
</config>

和文件 Product.php 在 app\code\local\ast\Catalog\Model\

class ast_Catalog_Model_Product extends Mage_Catalog_Model_Product 
{

    public function makeBlue() 
    {
        echo 'makeBlue';
    }   

}

现在,当我尝试在 app\design\frontend\ast\default\template\catalog\product\view.phtml 文件中使用我的函数 makeBlue() 时

<div class="product-shop">
 <?php 
               ....
               echo 'hello';
               echo $this->makeBlue(); 
               ....       
 ?>    

我遇到以下错误:

Invalid method Mage_Catalog_Block_Product_View::makeBlue(Array
(
)
)

#0 I:\WWW\Sklep_www4\app\design\frontend\ast\default\template\catalog\product\view.phtml(45): Varien_Object->__call('makeBlue', Array)
.......

怎么了?

您在创建模块时没有遵守命名约定。模块命名空间和模块名称应以大写字母开头,请尝试将 xml、class 名称和文件夹名称

中的 "ast" 更改为 "Ast"

问题是我扩展了 class ast_Catalog_Model_Product 而不是 Mage_Catalog_Block_Product_View。更改后将 class 扩展为 Mage_Catalog_Block_Product_View 一切正常。