1

我尝试用一​​个模块覆盖 magento Mage\Catalog\controllers\ProductController.php。在我的模块中,我尝试这样做:

\etc\config.xml

<global>
    <rewrite>        
        <aion_fbpage_catalog_productcontroller>
            <from><![CDATA[#^catalog/product/#]]></from> <!-- Mage_Catalog_ProductController  -->
            <to>fbpage/catalog_product/</to> <!-- Aion_FbPage_Catalog_ProductController  -->
        </aion_fbpage_catalog_productcontroller>
    </rewrite>
</global>
<frontend>
    <routers>
        <fbpage>
            <use>standard</use>
            <args>
                <module>Aion_FbPage</module>
                <frontName>fbPage</frontName>
            </args>
        </fbpage>
    </routers>
</frontend>

\controllers\Catalog\ProductController.php

<?php
require_once "Mage/Catalog/controllers/ProductController.php";

class Aion_FbPage_Catalog_ProductController extends Mage_Catalog_ProductController
{
    // My override stuff
}

当我尝试访问我的产品时,查看重写做了什么,我收到了这个错误:

致命错误:在第 56 行对 C:\xampp\htdocs\igneum\app\code\core\Mage\Catalog\Block\Product\View.php 中的非对象调用成员函数 getMetaTitle()

如果我在课堂上什么都不做,我会收到同样的错误消息

4

1 回答 1

4

你可以像下面这样使用

编辑你Package/Module/etc/config.xml

<?xml version="1.0"?>
<config>
... Your Other config here ....
   <frontend> 
        <routers> 
          <catalog> 
             <args> 
             <modules> 
                <Package_Catalog before="Mage_Catalog">Package_Catalog</Package_Catalog>
             </modules> 
             </args> 
         </catalog> 
       </routers> 
   </frontend> 
</config>

现在你的控制器已经准备好了。

include(Mage::getBaseDir()."/app/code/core/Mage/Catalog/controllers/ProductController.php");
class Package_Catalog_ProductController extends Mage_Catalog_ProductController
{
      public function viewAction(){
             echo __METHOD__;
      }
}
?>
于 2013-09-11T10:38:25.457 回答