0

カテゴリが削除されているときにMagentoのカスタムテーブルをクリアするには、SQLを実行する必要があります。そのことを念頭に置いて、私はここに示されている例に従っています:Magento-コアファイルのオーバーライド

これをconfig.xmlに入力しました:

<global>
    <models>
        <catalog>
            <rewrite>
                <category_api>MyCompany_MyModule_Model_Catalog_Category_Apis</category_api>
            </rewrite>
        </catalog>                      
    </models>
</global>

次に、ファイル構造を作成しました。

MyCompany
-> MyModule
  -> Model
    ->Catalog
      ->Category
        ->Api.php

Api.phpファイルには次のものがあります。

class MyCompany_MyModule_Model_Catalog_Category_Api extends Mage_Catalog_Model_Category_Api
{
    public function delete($categoryId)
    {
        Mage::log('I have overidden deletion of: ' . $categoryId);

        return true;
    }

}

この設定を使用すると、system.logに何も表示されないので、何か間違ったことをしていると思います。

編集

XMLをに変更する<category> </category>と、エラーが発生するため、ファイルが含まれるようになります。

Fatal error: Call to a member function setStoreId() on a non-object in C:\xampp\htdocs\magento\app\code\core\Mage\Adminhtml\controllers\Catalog\CategoryController.php on line 52

クラスをオーバーライドするときに何か特別なことをする必要がありますか?

4

1 に答える 1

3

イベントをキャッチするオブザーバーを作成するのは良いことではないでしょうかcatalog_category_delete_after。イベントの使用は、関数のオーバーライドよりも優先され、柔軟性も高くなります。削除手順はcatalog_categoryの削除を変更しませんが、より多くの機能を追加するため、イベントを使用する方が適切なオプションのようです。

于 2013-01-24T11:02:45.357 に答える