我使用的是magento企业版1.14.2。我想重写下面的类和函数。
Mage_Catalog_Model_Product_Url
public function formatUrlKey($str)
{
$urlKey = preg_replace('#[^0-9a-z]+#i', '-', Mage::helper('catalog/product_url')->format($str));
$urlKey = strtolower($urlKey);
$urlKey = trim($urlKey, '-');
return $urlKey;
}
这是我的重写模块配置文件,
<?xml version="1.0"?>
<config>
<modules>
<Mypackage_Mymodule>
<version>0.1.0</version>
</Mypackage_Mymodule>
</modules>
<global>
<helpers>
<mymodule>
<class>Mypackage_Mymodule_Helper</class>
</mymodule>
</helpers>
<models>
<mymodule>
<class>Mypackage_Mymodule_Model</class>
<resourceModel>mymodule_mysql4</resourceModel>
</mymodule>
<catalog>
<rewrite>
<product_url>Mypackage_Mymodule_Model_Catalog_Product_Url</product_url>
</rewrite>
</catalog>
</models>
</global>
</config>
这个是我的class
应用程序/代码/地方/Mypackage/Mymodule里/模型/目录/产品
class Mypackage_Mymodule_Model_Catalog_Product_Url extends Mage_Catalog_Model_Product_Url
{
public function formatUrlKey($str)
{
//my stuffs
}
}
我觉得一切似乎都很好。但是我不能重写这个类。但同一类在企业部分扩展到下一个类
Enterprise_Catalog_Model_Product_Url
所以这就是为什么它不工作…?如果我扩展这个类那么我就可以访问那个函数
public function formatUrlKey($str)
{
//my stuffs
}
任何解决方案或提示都会对我有帮助。 您需要扩展和覆盖这个表单Enterprise现在在模块配置文件中替换
<catalog>
<rewrite>
<product_url>Mypackage_Mymodule_Model_Catalog_Product_Url</product_url>
</rewrite>
</catalog>
<enterprise_catalog>
<rewrite>
<product_url>Mypackage_Mymodule_Model_Catalog_Product_Url</product_url>
</rewrite>
</enterprise_catalog>
和app/code/local/Mypackage/Mymodule/Model/Catalog/Product.php用Enterprise_Catalog_Model_Product_Url
尝试替换你的
<catalog>
<rewrite>
<product_url>Mypackage_Mymodule_Model_Catalog_Product_Url</product_url>
</rewrite>
</catalog>
与
<enterprise_catalog>
<rewrite>
<product_url>Mypackage_Mymodule_Model_Catalog_Product_Url</product_url>
</rewrite>
</enterprise_catalog>