在Magento中扩展核心模型

时间:2013-02-21 11:27:37

标签: php magento model magento-1.5

我正在尝试扩展:Mage_Catalog_Model_Product_Visibility

我正在修改Visibility.php文件中的以下内容:

public function getVisibleInSiteIds()
  {
    return array(self::VISIBILITY_IN_SEARCH, self::VISIBILITY_IN_CATALOG, self::VISIBILITY_BOTH);
  }

分为:

public function getVisibleInSiteIds()
  {
    return array(self::VISIBILITY_IN_SEARCH, self::VISIBILITY_IN_CATALOG, self::VISIBILITY_BOTH, self::VISIBILITY_NOT_VISIBLE);
  }

设置为“不可见”的过期产品仍会显示其直接网址(默认情况下,Magento会显示404)。

我通过修改核心文件进行了测试,但它确实有效。但我想创建一个小扩展,到目前为止,我无法让它工作。这就是我到目前为止所做的:

应用程序的/ etc /模块/ CustomCode_InvisibleProducts.xml

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

应用程序/代码/本地/ CustomCode / InvisibleProducts的/ etc / config.xml中

<?xml version="1.0"?>
<config>
    <modules>
        <CustomCode_InvisibleProducts>
            <version>0.1.0</version>
        </CustomCode_InvisibleProducts>
    </modules>
    <global>
        <models>
            <customcode_invisibleproducts>
                <class>CustomCode_InvisibleProducts_Model</class>
            </customcode_invisibleproducts>
            <catalog>
                <rewrite>
                    <product_visibility>CustomCode_InvisibleProducts_Model_Catalog_Product_Visibility</product_visibility>
                </rewrite>
            </catalog>
        </models>
    </global>
</config>

应用程序/代码/本地/ CustomCode / InvisibleProducts /型号/目录/产品/ Visibility.php

class CustomCode_InvisibleProducts_Model_Catalog_Product_Visibility extends Mage_Catalog_Model_Product_Visibility
{
     .....

不知怎的,我没有正确扩展模型,因为似乎没有发生/改变。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我已将CustomCode_InvisibleProducts的扩展名更改为CustomCode_Visible,因为我不知道还能做什么。

不知何故,扩展程序立即开始工作。

最终代码:

应用程序的/ etc /模块/ CustomCode_Visible.xml

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

应用程序/代码/本地/ CustomCode /可见光的/ etc / config.xml中

<?xml version="1.0"?>
<config>
    <modules>
        <CustomCode_Visible>
            <version>0.2.0</version>
        </CustomCode_Visible>
    </modules>
    <global>
        <models>
            <customcode_visible>
                <class>CustomCode_Visible_Model</class>
            </customcode_visible>
            <catalog>
                <rewrite>
                    <product_visibility>CustomCode_Visible_Model_Catalog_Product_Visibility</product_visibility>
                </rewrite>
            </catalog>
        </models>
    </global>
</config>

应用程序/代码/本地/ CustomCode /型号/目录/产品/ Visibility.php

class CustomCode_Visible_Model_Catalog_Product_Visibility extends Mage_Catalog_Model_Product_Visibility
{

  ....

        public function getVisibleInSiteIds()
    {
        return array(self::VISIBILITY_IN_SEARCH, self::VISIBILITY_IN_CATALOG, self::VISIBILITY_BOTH, self::VISIBILITY_NOT_VISIBLE);
    }

答案 1 :(得分:0)

您没有在config.xml中声明您的模块

<modules>
    <CustomCode_InvisibleProducts>
        <version>0.1.0</version>
    </CustomCode_InvisibleProducts>
</modules>

在全局节点之前插入此内容。