イベントcatalog_product_save_beforeで新しいオブザーバーを作成する方法


24

次のコードを使用して、catalog_product_save_beforeイベントに新しいオブザーバーを作成することにより、製品のメタ記述を自動生成します。

public function autoMetaDescription($observer) {
     $product = $observer->getEvent()->getProduct();
     $metaDescription = "Buy ". $product->getName()." for Rs ".number_format($product->getFinalPrice(), 2)." at sitename.com | New Book | Authorised seller for ". $product->getAttributeText('publisher');
    $product->setMetaDescription($metaDescription);
} 

どのフォルダー/ファイルにコードを記述する必要がありますか?


この方法では、csv製品のアップロードに問題がないことを確認してください。
ZUS

回答:


51

新しいモジュールを作成する必要があります。
それを呼び出しましょうEasylife_Meta
app/etc/modules/Easylife_Meta.xml-宣言ファイル

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Meta>
            <codePool>local</codePool>
            <active>true</active>
            <depends>
                <Mage_Catalog />
            </depends>
        </Easylife_Meta>
    </modules>
</config>

app/code/local/Easylife/Meta/etc/config.xml -構成ファイル

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Meta>
            <version>0.0.1</version>
        </Easylife_Meta>
    </modules>
    <global>
        <models>
            <easylife_meta>
                <class>Easylife_Meta_Model</class>
            </easylife_meta>
        </models>
    </global>
    <adminhtml>
        <events>
            <catalog_product_save_before><!-- observe the event -->
                <observers>
                    <easylife_meta>
                        <class>easylife_meta/observer</class>
                        <method>autoMetaDescription</method>
                    </easylife_meta>
                </observers>
            </catalog_product_save_before>
        </events>
    </adminhtml>
</config>

app/code/local/Easylife/Meta/Model/Observer.php -監視クラス

<?php 
class Easylife_Meta_Model_Observer {
    public function autoMetaDescription($observer) {
        $product = $observer->getEvent()->getProduct();
        $metaDescription = "Buy ". $product->getName()." for Rs ".number_format($product->getFinalPrice(), 2)." at sitename.com | New Book | Authorised seller for ". $product->getAttributeText('publisher');
        $product->setMetaDescription($metaDescription);
    } 
}

完了したらキャッシュをクリアします。


2
inの<class>easylife_meta_Model_Observer</class>代わりにすべきではないでしょうか?<class>easylife_meta/observer</class>config.xml
カシッシュ

2
@kashishいいえ、そうすべきではありません。
マリウス

私は、Magentoの1.9を使用しています@Marius、完全なクラス名に変更されたクラスは、私の助け
TheKitMurkit

@TheKitMurkit両方の方法で動作するはずです。エイリアスを使用すると、オブザーバーが上書きされた場合に適切に実行できます。
マリウス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.