2013-02-21 102 views
3

我試圖延長:Mage_Catalog_Model_Product_Visibility擴展核心模式在Magento

我修改的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 
{ 
    ..... 

不知何故我沒有正確地擴展模型,因爲沒有任何事情發生/改變。

感謝您的幫助!

+0

您確定模塊已加載嗎?您可以在「系統」 - >「配置」 - >「高級」 - >「禁用模塊輸出」中看到列表。如果它沒有出現,請刪除Magento緩存並重試。 – 2013-02-21 11:35:53

+0

是的,我做了,它在那裏,它啓用。緩存關閉btw。 – 2013-02-21 11:44:29

+0

重寫配置對我來說很合適。我的下一步是確定是否調用重寫的方法(使用調試器或在方法中調用'Mage :: log()') – 2013-02-21 12:12:54

回答

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> 

應用/code/local/CustomCode/Model/Catalog/Product/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

在你的最後一個代碼塊的上方有'app/code/local/CustomCode/Model/Catalog/Product/Visibility.php'。它不應該是'app/code/local/CustomCode/Visible/Model/Catalog/Product/Visibility.php'嗎? – 2014-01-14 23:11:56

0

你不要在你的config.xml

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

插入在此之前您的全球節點聲明你的模塊。

+0

非常感謝dagfr,只是做了改變。但是,我仍然沒有得到任何輸出。 – 2013-02-21 14:08:31