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
그것은해야하지 <class>easylife_meta_Model_Observer</class>대신 <class>easylife_meta/observer</class>config.xml?
kashish

2
@kashish 아니요해서는 안됩니다.
Marius

나는 젠토 1.9을 사용하고 @Marius, 전체 클래스 이름 변경 클래스는 나에게 도움이
TheKitMurkit

@TheKitMurkit 두 가지 방식으로 작동합니다. 별명을 사용하면 관찰자를 덮어 쓰는 경우 적절한 실행이 가능합니다.
Marius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.