Расширение базовой модели в Magento


Я пытаюсь расширить: Mage_Catalog_Model_Product_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);
  }

Устаревшие продукты, для которых установлено значение "не видно", все равно будут отображаться по их прямому URL (по умолчанию Magento будет показывать 404).

Я проверил это, изменив основной файл, и он работает. Но я хотел бы создать небольшое расширение, и пока я не могу заставить его работать. Вот что я сделал. далеко:

App / etc / modules / CustomCode_InvisibleProducts.xml

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

App / code / local/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/модель/каталог/продукт/видимость.php

class CustomCode_InvisibleProducts_Model_Catalog_Product_Visibility extends Mage_Catalog_Model_Product_Visibility
{
     .....

Каким-то образом я неправильно расширяю модель, потому что ничего не происходит/не меняется.

Спасибо за помощь!

2 3

2 ответа:

Я изменил имя расширения с CustomCode_InvisibleProducts на CustomCode_Visible, потому что не знал, что еще можно сделать.

И так или иначе, расширение начало работать сразу же.

Окончательный код:

App / etc / modules / CustomCode_Visible.xml

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

App / code / local/CustomCode/Visible/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>

Приложение / код / локальный / пользовательский код / модель / каталог / продукт / видимость.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);
    }

Вы не объявляете свой модуль в конфигурации.xml

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

Вставьте это перед вашим глобальным узлом.