Event Observer

The following snippet have to be added to the config.xml under the frontend (for FE-events) – or the adminhtml (for BE-Events) – tag: <events> <event_name> <observers> <observer_unique_config_name> <!– singleton or model –> <type>singleton</type> <class>Namespace_Modul_Model_Modelname</class> <method>functionToCallOnModelClassInstance</method> </observer_unique_config_name> </observers> </event_name> </events>  

Add JavaScript or CSS in Block class

 To add JavaScript or CSS files to the head section of the resulting HTML page, you can add something like this to the _prepareLayout function of a Block class: $headBlock = $this->getLayout()->getBlock(‘head’); $headBlock->addJs(‘somefolder/ask-sheldon.js’); $headBlock->addCss(‘somefolder/ask-sheldon.css’); As you can see, we can use the layout model to get the head block an use its functions to add files. This […]

Automatically load custom product attribute with collection (every time)

You can do this with the following XML in your config.xml: <frontend> <product> <collection> <attributes> <ATTRIBUTECODE/> </attributes> </collection> </product> </frontend> But ATTENTION: This can become a performance issue, because it loads the attribute every time the product collection is loaded! If you added too many attributes, the performance can get worse!  

Add breadcrump in custom block

This is how to add a Breadcrumb entry in an own block: $breadcrumbs = $this->getLayout()->getBlock(‘breadcrumbs’); $breadcrumbs->addCrumb(‘home’, array(‘label’=>Mage::helper(‘cms’)->__(‘Home’), ‘title’=>Mage::helper(‘cms’)->__(‘Go to Home Page’), ‘link’=>Mage::getBaseUrl())); $breadcrumbs->addCrumb(‘cms_page’, array(‘label’=>$page->getTitle(), ‘title’=>$page->getTitle()));

Add static block to cms page

First, you can use the XML-Layout-Update of the respective page (or other layout updates in every layout xml file ): <reference name=”content oder right oder left”> <block type=”cms/block” name=”blockname”> <action method=”setBlockId”><id>BLOCK-ID</id></action> </block> </reference> Or you can use the following placeholder: {{block type=”cms/block” block_id=”BLOCK-ID” template=”cms/content.phtml”}}

Magento – Get all stores

Here is how to get all stores of your Magento instance a an Array: <?php $aAllStores = Mage::app()->getStores(); foreach ($aAllStores as $iStoreId => $oVal){ $sStoreCode = Mage::app()->getStore($iStoreId)->getCode(); $sStoreName = Mage::app()->getStore($iStoreId)->getName(); $iStoreId = Mage::app()->getStore($iStoreId)->getId(); echo $sStoreCode; echo $sStoreName; echo $iStoreId; } ?> To include the admin store you can call getStores like that: $aAllStores = Mage::app()->getStores(true) […]

Useful database queries

Move products to an another category UPDATE db220385_2.catalog_category_product SET category_id = 18 WHERE category_id = 19; Get all attribute option values The following example shows, how to get all available values for the attribute filter_stores SELECT ea.attribute_code, eao.option_id, eaov.store_id, eaov.value_id, eaov.value FROM eav_attribute AS ea INNER JOIN eav_attribute_option AS eao ON ea.attribute_id = eao.attribute_id INNER […]

Add link to header navigation

The following code inserts a link for extended search into the headers top link navigation <reference name=”top.links”> <action method=”addLink”> <label>Advanced Search</label> <url>catalogsearch/advanced</url> <title>Advanced Search</title> <prepare>false</prepare> <urlParams></urlParams> <position>6</position> </action> </reference> It is really important, that all sub elements of  the action tag are in the exact this order as the corresponding parameters of the underlaying method Mage_Page_Block_Template_Links:: […]