Cara membuat pengamat baru di event catalog_product_save_before


24

Saya ingin pembuatan meta description untuk produk saya secara otomatis dengan membuat pengamat baru pada event catalog_product_save_sebelum dengan kode ini:

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);
} 

Di folder / file mana saya harus menulis kode?


Dalam metode ini, pastikan tidak ada masalah untuk mengunggah produk csv.
zus

Jawaban:


51

Anda perlu membuat modul baru.
Sebut saja Easylife_Meta.
app/etc/modules/Easylife_Meta.xml- file deklarasi

<?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 - file konfigurasi

<?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 - kelas pengamatan

<?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);
    } 
}

Bersihkan cache saat Anda selesai.


2
Bukankah seharusnya <class>easylife_meta_Model_Observer</class>bukan <class>easylife_meta/observer</class>di config.xml?
kashish

2
@ashish TIDAK seharusnya tidak.
Marius

@Marius Saya menggunakan Magento 1.9, mengubah kelas menjadi nama kelas penuh membantu saya
TheKitMurkit

@TheKitMurkit Ini seharusnya bekerja dua arah. Menggunakan alias memungkinkan eksekusi yang tepat jika pengamat Anda ditimpa.
Marius
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.