User Tools

Site Tools


urapidflow:customization

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
urapidflow:customization [2010/09/01 02:28]
xyphoid
urapidflow:customization [2010/10/14 19:27] (current)
unirgy
Line 1: Line 1:
 +====== uRapidFlow Customization ======
  
 +===== Events =====
 +
 +A general way to add observers to the events is:
 +
 +  - Declare an observer in your custom module configuration, app/etc/local.xml or app/etc/modules/* (any new file)
 +An example:
 +''app/etc/modules/MyCustom_Module.xml''
 +<file xml MyCustom_Module.xml>
 +<?xml version="1.0"?>
 +<config>
 +  <global>
 +    <events>
 +      <urapidflow_product_import_after_fetch>
 +        <observers>
 +          <mycustommodule>
 +            <type>singleton</type>
 +            <class>MyCustom_Module_Model_Observer</class>
 +            <method>urapidflow_product_import_after_fetch</method>
 +          </mycustommodule>
 +        </observers>
 +      </urapidflow_product_import_after_fetch>
 +    </events>
 +  </global>
 +</config>
 +</file>
 +
 +''app/code/local/MyCustom/Module/Model/Observer.php''
 +<file php Observer.php>
 +<?php
 +
 +class MyCustom_Module_Model_Observer
 +{
 +    public function urapidflow_product_import_after_fetch($observer)
 +    {
 +        $vars = $observer->getEvent()->getVars();
 +        $oldData = $vars['old_data'];
 +        
 +        // custom logic here
 +    }
 +}
 +</file>
 +
 +==== Product Import Events ====
 +
 +There are 5 stages during product import process where a custom logic can be plugged in as an event observer: 
 +  * ''urapidflow_product_import_after_fetch'' - after fetching new and old data
 +  * ''urapidflow_product_import_after_validate'' - after validating the new data
 +  * ''urapidflow_product_import_after_diff'' - after finding the difference between new and old data
 +  * ''urapidflow_product_import_after_save'' - after all changes has been saved
 +  * ''urapidflow_product_import_after_rtidx'' - after real-time reindex ran (if enabled in profile)
 +
 +The events are fired for each page of data (by default 100 rows), and each stage has more vars available than previous, and including all vars that were available before.
 +
 +=== urapidflow_product_import_after_fetch ===
 +
 +== Vars ==
 +  * ''profile'' - instance of current Unirgy_RapidFlow_Model_Profile
 +  * ''new_data'' - rows fetched from CSV file (including any default values for missing columns, as specified in the profile)
 +  * ''old_data'' - product information for matching SKUs fetched from DB
 +  * ''skus'' - mapping of SKUs in the current page to product IDs
 +  * ''attr_value_ids'' - EAV attribute value IDs for fetched old data
 +
 +== Example ==
 +
 +This example observer will change weight values of "2kg" and "470g" into correct decimal weight value.
 +
 +''app/code/local/MyCustom/Module/Model/Observer.php''
 +<file php Observer.php>
 +<?php
 +
 +class MyCustom_Module_Model_Observer
 +{
 +    public function urapidflow_product_import_after_fetch($observer)
 +    {
 +        $vars = $observer->getEvent()->getVars();
 +        foreach ($vars['new_data'] as &$row) {
 +            if (strpos($row['weight'], 'kg')!==false) {
 +                $row['weight'] = intval($row['weight']);
 +            } elseif (strpos($row['weight'], 'g')!==false) {
 +                $row['weight'] = intval($row['weight'])/1000;
 +            }
 +        }
 +        unset($row);
 +    }
 +}
 +</file>
 +
 +=== urapidflow_product_import_after_validate ===
 +
 +== Vars ==
 +  * ''valid'' - which products passed or not validation
 +
 +=== urapidflow_product_import_after_diff ===
 +
 +== Vars ==
 +  * ''insert_entity'' - new products to be created
 +  * ''change_attr'' - changed attributes
 +  * ''change_website'' - changed product-website associations
 +  * ''change_stock'' - changed inventory stock information
 +  * ''change_category_product'' - changed product-category associations
 +
 +==== Product Export Events ====
 +
 +There are 2 stages during product import process where a custom logic can be plugged in as an event observer: 
 +  * ''urapidflow_catalog_product_export_before_format'' - after fetching data from db and before formating for output
 +  * ''urapidflow_catalog_product_export_before_output'' - after formating for output and right before writing to file
 +
 +The events are fired for each page of data (by default 100 rows), and each stage has more vars available than previous, and including all vars that were available before.
 +
 +=== urapidflow_catalog_product_export_before_format ===
 +
 +== Vars ==
 +  * ''profile''
 +  * ''products''
 +  * ''fields''
 +
 +=== urapidflow_catalog_product_export_before_output ===
 +
 +== Vars ==
 +  * ''profile''
 +  * ''products''
 +  * ''fields''
 +  * ''rows''
urapidflow/customization.txt · by unirgy