Magento 1.9 Product Attribute – Assign Attribute Values

event-observermagento-1.9product-attribute

I trying make event observer with save_after.
This is an attempt to set Meta Title automatically when saving my products.
Creating a module:
So looks like the folder structure:
enter image description here

Observer.php code:

<?php    
class Unnamed_MyModule_Model_Observer
    {
        public function catalog_product_save_after($observer)
        {
            $product = $observer->getProduct();
            if(!$product->getMetaTitle()){
                $name = $product->getName();           
                $metaTitle = str_replace(' - ', ' ', $name);
                $product->setMetaTitle($metaTitle);
                $product->getResource()->saveAttribute($product, 'meta_title');
            }
        }
    } 

config.xml code:

<?xml version="1.0"?>
<global>
    <events>          
        <catalog_product_save_after>
            <observers> 
                <unnamed_mymodule>
                    <type>singleton</type>
                    <class>Unnamed/MyModule</class>
                    <method>catalog_product_save_after</method>
                </unnamed_mymodule>
            </observers> 
        </catalog_product_save_after>
    </events> 
</global>
</code>

magento/app/etc/modules Unnamed_MyModule.xml code:

<config>
    <modules>
        <Unnamed_MyModule>
            <active>true</active>
            <codePool>local</codePool>
        </Unnamed_MyModule>
    </modules>
</config>

It seems to me that there are no errors. But It is not work.
optional: magento 1.9, CE, I'm a beginner.
Tell me what is wrong?

Thanks!

Best Answer

There issue with your config.xml, you did not define the model alias.

It should look like this:

<?xml version="1.0"?>
<config>
  <modules>
    <Unnamed_MyModule>
      <version>0.1.0</version>
    </Unnamed_MyModule>
  </modules>
    <global>
        <models>
            <mymoduleunnamed>
                <class>Unnamed_MyModule_Model</class>
            </mymoduleunnamed>
        </models>
  </global>
    <global>
        <events>
            <catalog_product_save_after>
                <observers>
                    <mymoduleunnamed>
                        <type>singleton</type>
                        <class>mymoduleunnamed/observer</class>
                        <method>catalog_product_save_after</method>
                    </mymoduleunnamed>
                </observers>
            </catalog_product_save_after>
        </events>
    </global>       
</config> 
Related Topic