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 · Last modified: 2010/10/14 19:27 by unirgy