【问题标题】:Rewriting Magento Core Product Model using Module使用模块重写 Magento 核心产品模型
【发布时间】:2015-09-22 17:39:54
【问题描述】:

不确定我在这里做错了什么..但我正在尝试使用自定义模块重写 Magento 核心目录产品模型(app/code/Mage/Catalog/Model/Product)。见以下代码:

app/code/local/James/Catalog/etc/config.xml:

   <?xml version="1.0"?>
<config>
<modules>
   <James_Catalog>
        <version>1.0.1</version>
   </James_Catalog>
</modules>
<global>
  <models>
   <catalog>
     <rewrite>
       <product>James_Catalog_Model_Product</product>
     </rewrite>
    </catalog>
  </models>
</global>
</config>

app/code/local/James/Catalog/Model/Product.php:

<?php
require_once('Mage/Catalog/Model/Product.php');

class James_Catalog_Model_Product extends Mage_Catalog_Model_Product {

public function Test() {

return "Function Called";
}   
}

app/etc/modules/James_Catalog.xml:

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

然后,访问函数:

$_product = Mage::getSingleton('catalog/product');

echo $_product->Test();

没有返回任何内容。看起来我无法访问该功能。想法?感谢您的帮助。

【问题讨论】:

  • 而不是 给出一些唯一的名称,例如 - .. 同时检查错误日志是否有任何错误?
  • $_product = Mage::getSingleton('catalog/product');这也将调用核心模型,而不是尝试使用 $_product = Mage::getSingleton('james_catalog/product');

标签: php magento


【解决方案1】:

你的模块应该如下...

配置文件app/code/local/James/TestCatalog/etc/config.etc

<?xml version="1.0"?>
<config>
  <modules>
    <James_TestCatalog>
      <version>1.0.0</version>
    </James_TestCatalog>
  </modules>
  <global>
    <models>
        <catalog>
            <rewrite>
                <product>James_TestCatalog_Model_Catalog_Product</product>
            </rewrite>
        </catalog>
    </models>
  </global>
</config> 

和具有此路径的模型文件:app/code/local/James/TestCatalog/Model/Catalog/Product.php

class James_TestCatalog_Model_Catalog_Product extends Mage_Catalog_Model_Product
{
     //your code here ...
     public function Test() {
         return "Function Called";
     }
}

现在您可以访问您的测试方法了。

【讨论】:

  • 为什么对James_Catalog_Model_Catalog_Product 的更改是必要的,而James_Catalog_Model_Product 是不允许的?
猜你喜欢
  • 1970-01-01
  • 2013-04-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多