<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>EcomDev Magento developers</title> <atom:link href="http://www.ecomdev.org/feed" rel="self" type="application/rss+xml" /><link>http://www.ecomdev.org</link> <description>Magento Ecommerce developers</description> <lastBuildDate>Wed, 02 May 2012 08:49:27 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>CheckItOut! 1.3.0 will make your customer much more happier!</title><link>http://www.ecomdev.org/2012/02/27/checkitout-1-3-0-will-make-your-customer-much-more-happier.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=checkitout-1-3-0-will-make-your-customer-much-more-happier</link> <comments>http://www.ecomdev.org/2012/02/27/checkitout-1-3-0-will-make-your-customer-much-more-happier.html#comments</comments> <pubDate>Mon, 27 Feb 2012 20:00:38 +0000</pubDate> <dc:creator>Ivan Chepurnyi</dc:creator> <category><![CDATA[News]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=6015</guid> <description><![CDATA[<p><a
href="http://shop.ecomdev.org/checkitout.html"><img
class="alignright size-full wp-image-6016" title="CheckItOut" src="http://www.ecomdev.org/wp-content/uploads/2012/02/CheckItOut.png" alt="" /></a>We happy to announce the release of new CheckItOut! extension <a
href="http://shop.ecomdev.org/checkitout.html">version 1.3.0</a>. It is our new Major release with such new features:</p><ul><li>New Layout Implementation<ul><li>Possibility to change layout of elements with ease</li><li>Possibility to choose different type of</li></ul></li>&#8230;</ul>]]></description> <content:encoded><![CDATA[<p><a
href="http://shop.ecomdev.org/checkitout.html"><img
class="alignright size-full wp-image-6016" title="CheckItOut" src="http://www.ecomdev.org/wp-content/uploads/2012/02/CheckItOut.png" alt="" /></a>We happy to announce the release of new CheckItOut! extension <a
href="http://shop.ecomdev.org/checkitout.html">version 1.3.0</a>. It is our new Major release with such new features:</p><ul><li>New Layout Implementation<ul><li>Possibility to change layout of elements with ease</li><li>Possibility to choose different type of layout</li><li>Flexible way to specify more then one layout handle for a page</li></ul></li><li>Possibility to inlude own css file and choose one from the existent</li><li>Possibility to hide payment method if it can be omitted:<ul><li>Shipping Method Selection</li><li>Payment Method Selection</li><li>Coupon Code Form</li></ul></li><li>Possibility to preselect such default values:<ul><li>Default Payment Method</li><li>Default Shipping Method</li></ul></li><li>Possibility to enter coupon code on checkout page</li><li>Redirect customer to checkout if shopping bag is not empty</li></ul><h1>New Layout Implementation</h1><p>This feature allows you to choose or arrange the items on your checkout page without changing HTML or CSS styles in the your theme. Everything can be done via Layout. For making the admin user even more happier we implemented to Layout Types, so you can choose checkout look &amp; feel from the Dropdown in configuration.</p><p>Some Preconfigured Layout Types</p><h3>Two Column Layout</h3><p><a
href="http://www.ecomdev.org/wp-content/uploads/2012/02/CheckItOut-Two-Column-Layout-e1330436628916.jpg" target="_blank"><img
class="size-medium wp-image-6036" title="Two Column Layout" src="http://www.ecomdev.org/wp-content/uploads/2012/02/CheckItOut-Two-Column-Layout-e1330436628916-300x284.jpg" alt="" width="300" height="284" /></a></p><h3>Default Layout</h3><p><a
href="http://www.ecomdev.org/wp-content/uploads/2012/02/CheckItOut-Default-Layout.jpg" target="_blank"><img
class="size-medium wp-image-6035 aligncenter" title="Default Layout" src="http://www.ecomdev.org/wp-content/uploads/2012/02/CheckItOut-Default-Layout-300x195.jpg" alt="Default Layout" width="300" height="195" /></a></p><h1>Re-factored CSS Files</h1><p>With the new layout implementation we also introduce easier way of CSS styles applying to you webshop.<br
/> All the time the base style is included and only color, sizing are changing depending on preselected color scheme (it is also new configuration field). In addition to possibility of choosing color scheme you can specify CSS file name that will be applied on checkout page. For this purpose just specify the file path in your theme into appropriate configuration field.</p><h1>Less Steps, More Sales</h1><p>CheckItOut! also makes possible to reduce the number of checkout steps on the page. Now customer don&#8217;t need to click shipping method or payment method radio button if you have only one of them available. For making it possible just choose default shipping or payment method in configuration and change flag for hiding the method you want to hide. If you disable both of them, you customer need just to enter his address and click on &#8220;Place Order&#8221; button to complete the online purchase.</p><h3>Example of Less Steps Checkout</h3><p><a
href="http://www.ecomdev.org/wp-content/uploads/2012/02/Checkout.jpg" target="_blank"><img
class="size-medium wp-image-6044" title="Checkout" src="http://www.ecomdev.org/wp-content/uploads/2012/02/Checkout-300x241.jpg" alt="" width="300" height="241" /></a></p><h1>Even Less Steps</h1><p>Now it even possible to skip shopping cart step if customer&#8217;s shopping bag is not empty. If you turn on this feature your customer will see checkout page instead of shopping cart and can complete the purchase much more faster!</p><h1>Coupon Codes</h1><p>If your customer forgot to enter a discount code in shopping cart, now it is possible to enter it at checkout page as well. Just turn off hiding of coupon code step in extension configuration.</p><h1>Compatibility with latest Magento features</h1><p>We are always keeping the aim to make our extension as much compatible with Magento Community and Enterprise versions and this new version is not an exception form this rule. As usual our extension is fully compatible with core implementations of checkout customizations. Some major highlights per Magento version:</p><ul><li>Community<ul><li>Persistent Shopping Cart</li><li>Gift Messages</li><li>All Core Payment Methods</li><li>All Core Shipping Methods</li><li>Checkout Agreements</li><li>Customer Address Book</li></ul></li><li>Enterprise<ul><li>Store Credit</li><li>Reward Points</li><li>Gift Options</li><li>Customer Address Attributes</li><li>Gift Cards</li></ul></li></ul><h1>Something Sweet for Developers:</h1><p>For adding your own layout type or css color scheme just specify such XML in your config.xml:</p><pre class="brush: xml; title: Example of new Layout Type or CSS Color Scheme addition; notranslate">
             &lt;!-- node for custom page layouts --&gt;
                    &lt;label&gt;Custom Layout Name&lt;/label&gt;
                        ecomdev_checkitout_layout_default
                        your_custom_layout_handle_name
             &lt;!-- node for custom color schemes --&gt;
                    &lt;label&gt;Your Custom Color Scheme&lt;/label&gt;
                        css/ecomdev/checkitout/base.css
                        your/custom/color/scheme.css
</pre><h3>Some New Practice</h3><p>In the new CheckItOut! version we implemented dependency injection for interception of onepage checkout model calls and make it compatible with all existing customizations to it. Hope you will enjoy it!</p><h1>Demo Installment</h1><p>You can try our new CheckItOut! version on our demo:<br
/> <a
href="http://demo.ecomdev.org">demo.ecomdev.org</a></p><p>You can purchase our new CheckitOut extension <a
href="http://shop.ecomdev.org/checkitout.html">here &gt;</a></p><p>Don&#8217;t forget to follow our <a
title="EcomDev Facebook Page" href="http://www.facebook.com/EcomDev" target="_blank">Facebook page</a> for receiving a coupon code for 20% off the extension price for first 10 new CheckItOut buyers!</p> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2012/02/27/checkitout-1-3-0-will-make-your-customer-much-more-happier.html/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Test Driven Magento Development Seminar Video and Code</title><link>http://www.ecomdev.org/2012/01/31/test-driven-magento-development-seminar-video-and-code.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=test-driven-magento-development-seminar-video-and-code</link> <comments>http://www.ecomdev.org/2012/01/31/test-driven-magento-development-seminar-video-and-code.html#comments</comments> <pubDate>Tue, 31 Jan 2012 08:55:50 +0000</pubDate> <dc:creator>Ivan Chepurnyi</dc:creator> <category><![CDATA[News]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=5977</guid> <description><![CDATA[<p>Last Friday we organized a free online seminar related to real examples of using of test driven development practices in Magento. This blog posting contains the code I created during the practice and recorded video of the seminar. For some &#8230;</p>]]></description> <content:encoded><![CDATA[<p>Last Friday we organized a free online seminar related to real examples of using of test driven development practices in Magento. This blog posting contains the code I created during the practice and recorded video of the seminar. For some reason the sound of the first part of the seminar were missing, so I included only practice and some part of theory into the video.</p><p>The code you can download by the following <a
href="http://www.ecomdev.org/wp-content/uploads/2012/01/Seminar_Guestbook.zip">link</a></p><p>Video unfortunately were cropped by 720p format and parts of my mac screen is not visible.<br
/> It is recommended to view it in HD mode, otherwise it will be hard to read the code on the screen.<br
/> <iframe
src="http://player.vimeo.com/video/35937480?portrait=0&amp;color=c9ff23" width="600" height="338" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><p><a
href="http://vimeo.com/35937480">Magento Test Driven Development Seminar &#8211; Practice Part of the Seminar</a> from <a
href="http://vimeo.com/user8455618">Ivan Chepurnyi</a> on <a
href="http://vimeo.com">Vimeo</a>.</p><p>Small notice:<br
/> I was entering <strong>phpunit &#8211;colors UnitTests.php</strong> for running the tests in the command line.</p> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2012/01/31/test-driven-magento-development-seminar-video-and-code.html/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Register for Free Magento Development Seminar!</title><link>http://www.ecomdev.org/2012/01/23/register-for-free-magento-development-seminar.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=register-for-free-magento-development-seminar</link> <comments>http://www.ecomdev.org/2012/01/23/register-for-free-magento-development-seminar.html#comments</comments> <pubDate>Mon, 23 Jan 2012 13:54:24 +0000</pubDate> <dc:creator>Ivan Chepurnyi</dc:creator> <category><![CDATA[News]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=5945</guid> <description><![CDATA[<p><img
class="alignright size-medium wp-image-5507" title="seminar" src="http://www.ecomdev.org/wp-content/uploads/2011/08/seminar-177x300.png" alt="" width="69" height="118" />Finally, we got some time for sharing knowledge with community. We were extremely busy with our current projects during last 3 months, and only now got chance to dedicated nice Friday evening for a free webinair!</p><p>So what is waiting &#8230;</p>]]></description> <content:encoded><![CDATA[<p><img
class="alignright size-medium wp-image-5507" title="seminar" src="http://www.ecomdev.org/wp-content/uploads/2011/08/seminar-177x300.png" alt="" width="69" height="118" />Finally, we got some time for sharing knowledge with community. We were extremely busy with our current projects during last 3 months, and only now got chance to dedicated nice Friday evening for a free webinair!</p><p>So what is waiting for you this Friday?</p><p><span
id="more-5945"></span></p><h3>Magento Test Driven Development in Practice<br
/> Webinar on January 27</h3><p><strong>Space is limited.</strong></p><p>Reserve your Webinar seat now at:<br
/> <a
href="http://bit.ly/yX0jtb"> https://www3.gotomeeting.com/register/489066878</a></p><p>During 1,5 hour webinair we are going to show you how to:</p><ul><li>Writing Simple Tests for Magento</li><li>Fixtures, Expectations, Data Providers</li><li>Model/Block/Helper Tests</li><li>Controller/Layout Tests</li><li>Mocking and Stubbing Magento entities</li></ul><p>And also small Questions &amp; Answers  section for  15 mins. So be prepared for them!</p><p><strong>Date:</strong> Friday, January 27, 2012<br
/> <strong>Time:</strong> 5:00 PM &#8211; 6:30 PM CET</p><p>After registering you will receive a confirmation email containing information about joining the Webinar.</p><p><strong>System Requirements</strong></p><ul><li><strong>PC-based attendees<br
/> </strong>Required: Windows® 7, Vista, XP or 2003 Server</li><li><strong>Macintosh®-based attendees<br
/> </strong>Required: Mac OS® X 10.5 or newer</li></ul> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2012/01/23/register-for-free-magento-development-seminar.html/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Checkout the new office of superior Magento development</title><link>http://www.ecomdev.org/2011/12/20/checkout-the-house-of-superior-magento-development.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=checkout-the-house-of-superior-magento-development</link> <comments>http://www.ecomdev.org/2011/12/20/checkout-the-house-of-superior-magento-development.html#comments</comments> <pubDate>Tue, 20 Dec 2011 23:51:18 +0000</pubDate> <dc:creator>Aldo Wink</dc:creator> <category><![CDATA[News]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=5866</guid> <description><![CDATA[<p>It&#8217;s all about stepping forward, doing it, making it happen. Next week Ecomdev will have it&#8217;s own office in Kiev, hosting 8 ambitious developers who want to make the Magento ecommerce world a better place!</p><p>ps, good paint job guys!&#8230;</p>]]></description> <content:encoded><![CDATA[<p>It&#8217;s all about stepping forward, doing it, making it happen. Next week Ecomdev will have it&#8217;s own office in Kiev, hosting 8 ambitious developers who want to make the Magento ecommerce world a better place!</p><p>ps, good paint job guys!<br
/> <a
href='http://www.ecomdev.org/2011/12/20/checkout-the-house-of-superior-magento-development.html/img_20111220_170758' title='IMG_20111220_170758'><img
width="90" height="90" src="http://www.ecomdev.org/wp-content/uploads/2011/12/IMG_20111220_170758-90x90.jpg" class="attachment-thumbnail" alt="IMG_20111220_170758" title="IMG_20111220_170758" /></a> <a
href='http://www.ecomdev.org/2011/12/20/checkout-the-house-of-superior-magento-development.html/img_20111220_170932' title='IMG_20111220_170932'><img
width="90" height="90" src="http://www.ecomdev.org/wp-content/uploads/2011/12/IMG_20111220_170932-90x90.jpg" class="attachment-thumbnail" alt="IMG_20111220_170932" title="IMG_20111220_170932" /></a> <a
href='http://www.ecomdev.org/2011/12/20/checkout-the-house-of-superior-magento-development.html/img_20111220_170739-1' title='IMG_20111220_170739-1'><img
width="90" height="90" src="http://www.ecomdev.org/wp-content/uploads/2011/12/IMG_20111220_170739-1-90x90.jpg" class="attachment-thumbnail" alt="IMG_20111220_170739-1" title="IMG_20111220_170739-1" /></a> <a
href='http://www.ecomdev.org/2011/12/20/checkout-the-house-of-superior-magento-development.html/img_20111220_170752' title='IMG_20111220_170752'><img
width="90" height="90" src="http://www.ecomdev.org/wp-content/uploads/2011/12/IMG_20111220_170752-90x90.jpg" class="attachment-thumbnail" alt="IMG_20111220_170752" title="IMG_20111220_170752" /></a> <a
href='http://www.ecomdev.org/2011/12/20/checkout-the-house-of-superior-magento-development.html/img_20111220_170831' title='IMG_20111220_170831'><img
width="90" height="90" src="http://www.ecomdev.org/wp-content/uploads/2011/12/IMG_20111220_170831-90x90.jpg" class="attachment-thumbnail" alt="IMG_20111220_170831" title="IMG_20111220_170831" /></a> <a
href='http://www.ecomdev.org/2011/12/20/checkout-the-house-of-superior-magento-development.html/img_20111220_170932-1' title='IMG_20111220_170932-1'><img
width="90" height="90" src="http://www.ecomdev.org/wp-content/uploads/2011/12/IMG_20111220_170932-1-90x90.jpg" class="attachment-thumbnail" alt="IMG_20111220_170932-1" title="IMG_20111220_170932-1" /></a></p> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2011/12/20/checkout-the-house-of-superior-magento-development.html/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>EcomDev breaks Magento speed record!</title><link>http://www.ecomdev.org/2011/10/08/ecomdev-breaks-magento-speed-limits.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ecomdev-breaks-magento-speed-limits</link> <comments>http://www.ecomdev.org/2011/10/08/ecomdev-breaks-magento-speed-limits.html#comments</comments> <pubDate>Sat, 08 Oct 2011 10:00:30 +0000</pubDate> <dc:creator>Ivan Chepurnyi</dc:creator> <category><![CDATA[Extensions]]></category> <category><![CDATA[News]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=5766</guid> <description><![CDATA[<p>I am happy to announce that we released a new FREE Magento extension that will help merchants with huge product databases make their stores SEO friendly by keeping url rewrite index up to date! I think everyone knows that URL &#8230;</p>]]></description> <content:encoded><![CDATA[<p>I am happy to announce that we released a new FREE Magento extension that will help merchants with huge product databases make their stores SEO friendly by keeping url rewrite index up to date! I think everyone knows that URL rewrite index is the slowest one in Magento, but not anymore&#8230; Now it appears to be one of the fastest!</p><h2>Numbers</h2><p>Before talking about features of this extension, I&#8217;d like to give some benchmark results for our extension.</p><p>Hardware used for benchmarks: AMD Athlon(tm) 64 X2 Dual Core Processor 6000+ 3GHz, 8GB DDR2</p><p>Magento instances used for calculation of performance:</p><ul><li>Simple: 120 Skus, 27 Categories, 3 store</li><li>Usual: 3,912 Skus, 17 Categories, 1 store</li><li>Large: 31,124 Skus, 197 Categories, 5 stores</li><li>Huge: 202,628 Skus, 401 Category, 1 store</li></ul><p>I tried to measure four full reindex processes for core rewrite indexer, but for Large and Huge instances I was too bored after waiting an hour for first run to complete, so I just killed a process. If someone wants perform such benchmarks on similar server machine, I will add results to the table.</p><p>1st run was made on clean url rewrite table, e.g. without any prepared index data.<br
/> 2nd, 3rd and 4th are reindex process on existing data.</p><h4>Results</h4><div
id="traininglist"><table
width="100%"><thead><tr><th
rowspan="2"><strong>Instance Code</strong></th><th
colspan="4"><strong>Core</strong></th><th
colspan="4"><strong>EcomDev</strong></th></tr><tr><th><strong>1st</strong></th><th><strong>2nd</strong></th><th><strong>3rd</strong></th><th><strong>4th</strong></th><th><strong>1st</strong></th><th><strong>2nd</strong></th><th><strong>3rd</strong></th><th><strong>4th</strong></th></tr></thead><tbody><tr><td>Simple</td><td>17,13 sec</td><td>6.48 sec</td><td>3.13 sec</td><td>2.52 sec</td><td>5.03 sec</td><td>3.93 sec</td><td>2.88 sec</td><td>3.72 sec</td></tr><tr><td>Usual</td><td>107.55 sec</td><td>116.76 sec</td><td>18.06 sec</td><td>22.43 sec</td><td>14.72 sec</td><td>7.41 sec</td><td>4.56 sec</td><td>6.22 sec</td></tr><tr><td>Large</td><td>too long</td><td>N/A</td><td>N/A</td><td>N/A</td><td>169.19 sec</td><td>111.67 sec</td><td>91.42 sec</td><td>84.38 sec</td></tr><tr><td>Huge</td><td>too long</td><td>N/A</td><td>N/A</td><td>N/A</td><td>346.90 sec</td><td>178.27 sec</td><td>196.10 sec</td><td>192.73 sec</td></tr></tbody></table></div><p>As you see in the result table, difference in performance between our and core implementation is more noticeable on databases with more then 600 Skus.</p><h2>Features</h2><p>So does our indexer support all the features of core url rewrite one? Sure, it has such features:</p><ul><li>Transliteration of accented latin, German, Hebrew, Russian, Ukrainian characters to default latin characters range ([a-z]).</li><li>Multi-store (language based) url paths for products &amp; categories</li><li>Nested url paths for categories &amp; categories</li><li>Nested url path for products that are in anchor categories and not assigned directly (Not supported by Core)</li><li>Handling duplicated url path with adding index to it (unique-key, unique-key-1, unique-key-2, unique-key-3, etc)</li></ul><h2>System Requirements</h2><p>MDBS is not supported for now.</p><ul><li>MySQL5.0 or higher</li><li>Magento CE1.4.2,1.5.x,1.6.x</li></ul><h2>Installation</h2><p>For now you can obtain this extension only via Git repository:<br
/> <a
title="EcomDev_UrlRewrite on GitHub" href="https://github.com/IvanChepurnyi/EcomDev_UrlRewrite" target="_blank">https://github.com/IvanChepurnyi/EcomDev_UrlRewrite</a></p><p>I will upload an extension to Magento Connect when come back from my Vacation, that will be from Oct 10th till Oct 14th.</p><p>If you have any ideas or features you would like to add to the extension, you can use <a
title="EcomDev_UrlRewrite Issue Trackeron" href="https://github.com/IvanChepurnyi/EcomDev_UrlRewrite/issues" target="_blank">Issue Tracker</a> on GitHub.</p> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2011/10/08/ecomdev-breaks-magento-speed-limits.html/feed</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Magento Index Seminar Video &amp; Guide</title><link>http://www.ecomdev.org/2011/09/16/magento-index-seminar-video-guide.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=magento-index-seminar-video-guide</link> <comments>http://www.ecomdev.org/2011/09/16/magento-index-seminar-video-guide.html#comments</comments> <pubDate>Fri, 16 Sep 2011 01:39:10 +0000</pubDate> <dc:creator>Ivan Chepurnyi</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[Overview]]></category> <category><![CDATA[index]]></category> <category><![CDATA[Magento]]></category> <category><![CDATA[magento developers]]></category> <category><![CDATA[seminar]]></category> <category><![CDATA[training]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=5710</guid> <description><![CDATA[<p><img
class="alignright size-medium wp-image-5507" title="seminar" src="http://www.ecomdev.org/wp-content/uploads/2011/08/seminar-177x300.png" alt="" width="69" height="118" />Last week there was an online seminar about Magento Indexes functionality. In this blog post I would like to describe a bit more properly a solution for custom index creation, because there were some things that were some issues with &#8230;</p>]]></description> <content:encoded><![CDATA[<p><img
class="alignright size-medium wp-image-5507" title="seminar" src="http://www.ecomdev.org/wp-content/uploads/2011/08/seminar-177x300.png" alt="" width="69" height="118" />Last week there was an online seminar about Magento Indexes functionality. In this blog post I would like to describe a bit more properly a solution for custom index creation, because there were some things that were some issues with example in the slides. Just was a last moment change before seminar to make it multi-store instead of global.</p><h2>Custom Indexer Creation Guide</h2><p>Here you can see step by step implementation of a possible example with featured products indexer. As I told on seminar there is more easy and faster way to create featured products, for instance if you add &#8220;is_featured&#8221; to flat index. But this one is good for learning simple indexer creation.</p><p>You can download a full module code by clicking <a
title="Seminar Custom Module" href="http://www.ecomdev.org/wp-content/uploads/2011/09/CustomMagentoIndexer.zip">here</a>.</p><h3>1. Creating Product Attribute</h3><p>Let&#8217;s create a product attribute, that will be used for marking our products as featured.</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/sql/ecomdev_indexseminar/install-1.6.0.0.php; notranslate">
$this-&gt;addAttribute(Mage_Catalog_Model_Product::ENTITY, 'is_featured', array(
    'type' =&gt; 'int',
    'label' =&gt; 'Is featured',
    'input' =&gt; 'select',
    'source' =&gt; 'eav/entity_attribute_source_boolean',
    'global' =&gt; Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'user_defined' =&gt; false,
    'required' =&gt; false
));
</pre><p>So as you see in the code, it has store view scope for making possible to define different featured products for every store view.</p><h3>2. Designing Index Table</h3><p>Before you implement  a new indexer you need to take care about how the index table will look like. E.g. you need to create  a table structure that will be optimized for using it on the frontend. So we are going to create a table with only two columns: store_id and product_id. Of course let&#8217;s use available Varien_Db_Ddl_Table.</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/sql/ecomdev_indexseminar/install-1.6.0.0.php; notranslate">
// Defining table structure via object
$table = $this-&gt;getConnection()
    -&gt;newTable($this-&gt;getTable('ecomdev_indexseminar/featured_products'))
    -&gt;addColumn('store_id', Varien_Db_Ddl_Table::TYPE_SMALLINT, null,
                array(
                    'unsigned' =&gt; true,
                    'nullable' =&gt; false,
                    'primary' =&gt; true
                ))
    -&gt;addColumn('product_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null,
                array(
                    'unsigned' =&gt; true,
                    'nullable' =&gt; false,
                    'primary' =&gt; true
                ))
   -&gt;addForeignKey(
        $this-&gt;getFkName('ecomdev_indexseminar/featured_products', 'store_id', 'core/store', 'store_id'),
        'store_id', $this-&gt;getTable('core/store'), 'store_id',
        Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE
    )
    -&gt;addForeignKey(
        $this-&gt;getFkName('ecomdev_indexseminar/featured_products', 'product_id', 'catalog/product', 'entity_id'),
        'product_id', $this-&gt;getTable('catalog/product'), 'entity_id',
        Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE
    );
// Executing table creation object
$this-&gt;getConnection()-&gt;createTable($table);
</pre><p>Foreign keys just used for auto-cleaning the index table if product or store view was deleted. You may not add them if you need to have additional performance on index creation process.</p><h3>3. Defining Indexer in Configuration</h3><p>So now we going to proceed with creation indexer model itself, so let&#8217;s define it in configuration, to let Magento know about new indexer.</p><pre class="brush: xml; title: app/code/local/EcomDev/IndexSeminar/etc/config.xml; notranslate">
&lt;config&gt;
  &lt;!-- other code... --&gt;
  &lt;global&gt;
    &lt;!-- other code... --&gt;
        &lt;index&gt;
            &lt;indexer&gt;
                &lt;featured_products&gt;
                    &lt;model&gt;ecomdev_indexseminar/indexer_featured&lt;/model&gt;
                 &lt;/featured_products&gt;
            &lt;/indexer&gt;
        &lt;/index&gt;
    &lt;!-- other code... --&gt;
  &lt;/global&gt;
 &lt;!-- other code... --&gt;
&lt;/config&gt;
</pre><p>So we need just to specify our indexer code that can be used for getProcessByCode() method and model name that will realize our indexer itself. In this code snipped, indexer code is &#8220;featured_products&#8221; and model is<br
/> &#8220;ecomdev_indexseminar/indexer_featured&#8221;.</p><h3>4. Creating Indexer Model</h3><p>All the indexer models should be extended from Mage_Index_Model_Indexer_Abstract.</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/Model/Indexer/Featured.php; notranslate">
class EcomDev_IndexSeminar_Model_Indexer_Featured
    extends Mage_Index_Model_Indexer_Abstract
{
}
</pre><p>Then you need to define events that this indexer should process by _registerEvent method, i.e. matching entity and event types to make them available for index.</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/Model/Indexer/Featured.php; notranslate">
class EcomDev_IndexSeminar_Model_Indexer_Featured
    extends Mage_Index_Model_Indexer_Abstract
{
    protected $_matchedEntities = array(
        Mage_Catalog_Model_Product::ENTITY =&gt; array(
            Mage_Index_Model_Event::TYPE_SAVE,
            Mage_Index_Model_Event::TYPE_MASS_ACTION
        )
    );
}
</pre><p>In our case it is only save and mass product update events for catalog product.</p><p>Also lets create _construct method, that initializes our resource model (our database layer for indexer)</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/Model/Indexer/Featured.php; notranslate">
class EcomDev_IndexSeminar_Model_Indexer_Featured
    extends Mage_Index_Model_Indexer_Abstract
{
// .. previous lines
    protected function _construct()
    {
        $this-&gt;_init('ecomdev_indexseminar/indexer_featured');
    }
}
</pre><p>Then we need to add methods that will return description and our indexer name for displaying on &#8220;System -&gt; Index Management&#8221; page. They are quite simple doesn&#8217;t require to explanation.</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/Model/Indexer/Featured.php; notranslate">
class EcomDev_IndexSeminar_Model_Indexer_Featured
    extends Mage_Index_Model_Indexer_Abstract
{
// .. previous lines
    public function getName()
    {
        return Mage::helper('ecomdev_indexseminar')-&gt;__('Featured Product');
    }
    public function getDescription()
    {
        return Mage::helper('ecomdev_indexseminar')-&gt;__('Indexes something');
    }
}
</pre><p>Then we need to realize a method that will perform a check for changes in product, that may affect rebuilding index and store that data for our indexer further process.</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/Model/Indexer/Featured.php; notranslate">
class EcomDev_IndexSeminar_Model_Indexer_Featured
    extends Mage_Index_Model_Indexer_Abstract
{
// .. previous lines
    protected function _registerEvent(Mage_Index_Model_Event $event)
    {
        /* @var $entity Mage_Catalog_Model_Product */
        $entity = $event-&gt;getDataObject();
        if ($entity-&gt;dataHasChangedFor('is_featured')) {
            $event-&gt;setData('product_id', $entity-&gt;getId());
        } elseif ($entity-&gt;getAttributesData()) {
            $attributeData = $entity-&gt;getAttributesData();
            if (isset($attributeData['is_featured'])) {
                $event-&gt;setData('product_ids', $entity-&gt;getProductIds());
            }
        }
    }
}
</pre><p>So now let take a look what it actually does:</p><ul><li>If it receives a product model that has &#8220;is_featured&#8221; attribute value changed, then it stores this product id for event data. Usually indexers add own prefix to values that are stored to event, to not conflict with each other.</li><li>Then it checks if it is a massaction object, that contains a change for &#8220;is_featured&#8221; attribute as well. If our attribute changed, then store an array of product ids to reindex.</li><li>And of course it doesn&#8217;t store anything if related data to its logic was not changed</li></ul><p>Okey, seems our indexer registers proper data for further indexing process, so let go forward. Now it&#8217;s time to create method that runs indexer resource model method depending on entity and event types.</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/Model/Indexer/Featured.php; notranslate">
class EcomDev_IndexSeminar_Model_Indexer_Featured
    extends Mage_Index_Model_Indexer_Abstract
{
// .. previous lines
    protected function _processEvent(Mage_Index_Model_Event $event)
    {
        if ($event-&gt;getData('product_id') || $event-&gt;getData('product_ids')) {
            $this-&gt;callEventHandler($event);
        }
    }
}
</pre><p>So this method only checks if there is any data we set before, and uses callEventHandler() method that invokes proper resource model method. For instance if we have entity type &#8220;catalog_product&#8221; and event type &#8220;save&#8221; then the name of invoked method will be &#8220;catalogProductSave&#8221;, i.e. concatenated and &#8220;camelized&#8221; name from this two properties of event.</p><h3>5. Creating Resource Model</h3><p>So the index model is ready, the only one most important part left. It is our index model that generates all the data for index. Index module also has an abstract class for that we should extend from: Mage_Index_Model_Resource_Abstract.</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/Model/Resource/Indexer/Featured.php; notranslate">
class EcomDev_IndexSeminar_Model_Resource_Indexer_Featured
    extends Mage_Index_Model_Resource_Abstract
{
    protected function _construct()
    {
        // Defining the connections prefix for our resource.
        $this-&gt;_setResource('ecomdev_indexseminar');
    }
}
</pre><p>Also as you see it does some initialization in _construct method, for letting Magento know wich connection it may use, if there will be different connections for indexer module.</p><p>Then we are going to create the main method that will be invoked for rebuilding any kind of index, I made it flexible, because I don&#8217;t like copy-paste <img
src='http://www.ecomdev.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . The method body is quite good explained by comments in the snippet itself.</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/Model/Resource/Indexer/Featured.php; notranslate">
class EcomDev_IndexSeminar_Model_Resource_Indexer_Featured
    extends Mage_Index_Model_Resource_Abstract
{
// ... other code
    protected function _reindexEntity($productId = null)
    {
        // New select object for data for index retrieval
        $select = $this-&gt;_getWriteAdapter()-&gt;select();
        // Getting attribute model for retrieving its meta-information (attribute id, backend table name)
        /* @var $attribute Mage_Catalog_Model_Resource_Eav_Attribute */
        $attribute = Mage::getSingleton('eav/config')
                         -&gt;getAttribute('catalog_product', 'is_featured');
        $select
            // Select all store views
            -&gt;from(array('store' =&gt; $this-&gt;getTable('core/store')), array('store_id'))
            // Joining default store value
            -&gt;join(array('default_value' =&gt; $attribute-&gt;getBackendTable()),
                         'default_value.store_id = 0', array('entity_id'))
            // Select current store value
            -&gt;joinLeft(array('store_value' =&gt; $attribute-&gt;getBackendTable()),
                       'store_value.attribute_id = default_value.attribute_id'
                       . ' AND store_value.entity_id = default_value.entity_id'
                       . ' AND store_value.store_id = store.store_id',
                       array())
            // Limiting select by only featured products
            -&gt;where('default_value.value = ? OR store_value.value = ?', 1)
            // Add condition if current store value is not &quot;No&quot; (empty or not equals to 0)
            -&gt;where('store_value.value IS NULL OR store_value.value != ?', 0)
            // Limiting select only by our attribute data
            -&gt;where('default_value.attribute_id = ?', $attribute-&gt;getId())
            // Do not generate values for default store
            -&gt;where('store.store_id != ?', 0);
        // If index should be rebuild by one or some set of products
        if ($productId !== null) {
            // If single product id, then cast to array
            if (!is_array($productId)) {
                $productId = array($productId);
            }
            $select-&gt;where('default_value.entity_id IN(?)', $productId);
            // Cleaning existing rows for product to reindex
            $this-&gt;_getIndexAdapter()-&gt;delete(
                $this-&gt;getTable('ecomdev_indexseminar/featured_products'),
                array(
                    'product_id IN(?)' =&gt; $productId
                )
            );
        } else { // If it is full re-index clear all index data
            $this-&gt;_getIndexAdapter()-&gt;delete($this-&gt;getTable('ecomdev_indexseminar/featured_products'));
        }
        // Fullfil the index table from our select
        $this-&gt;insertFromSelect(
            $select,
            $this-&gt;getTable('ecomdev_indexseminar/featured_products'),
            array('store_id', 'product_id')
        );
    }
}
</pre><p>After we have unified method for generation of index data, we can just call it from different index event handlers:</p><pre class="brush: php; title: app/code/local/EcomDev/IndexSeminar/Model/Resource/Indexer/Featured.php; notranslate">
class EcomDev_IndexSeminar_Model_Resource_Indexer_Featured
    extends Mage_Index_Model_Resource_Abstract
{
// ... other code
    // Handler for &quot;Reindex&quot; action in the admin panel or console
    public function reindexAll()
    {
        // Call our reindex method without parameters,
        // to rebuild all data
        $this-&gt;_reindexEntity();
    }
    // Handler for save event on particular product
    public function catalogProductSave($event)
    {
        // Passing single product id to reindex method
        $this-&gt;_reindexEntity($event-&gt;getData('product_id'));
    }
    // Handler for updating products data via massaction
    public function catalogProductMassAction($event)
    {
        // Passing an array of product ids to our reindex method
        $this-&gt;_reindexEntity($event-&gt;getData('product_ids'));
    }
}
</pre><p>So congratulation you have working custom indexer!</p><p>To apply this data on the fronend you can find a small example with observer for it in the code, available to download. It observes <strong>catalog_product_collection_apply_limitations_after</strong> event and calls a method on resource model that joins our index table, so limits selection results.</p><p>Also it uses collections flag functionality to add index only when it needed. So if you want to display featured products in the block, you need to set flag &#8220;featured&#8221; to a product collection, before loading the collection itself.</p><pre class="brush: php; title: Code Snippet; notranslate">
$collection-&gt;setFlag('featured', true);
</pre><h2>Seminar Video</h2><p>Before you are going to check this video recording from seminar, I want to excuse for some issues with the presentation, I just got cold one day before it and it was first such an online seminar when you don&#8217;t have visual contact with attendees. But anyway I hope you enjoy it <img
src='http://www.ecomdev.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><iframe
src="http://player.vimeo.com/video/28835600?portrait=0&amp;color=c9ff23" width="600" height="338" frameborder="0" webkitAllowFullScreen="true" allowFullScreen="true"></iframe><p><a
href="http://vimeo.com/28835600">Magento Index Functionality Seminar &#8211; Sep 8</a> from <a
href="http://vimeo.com/user8455618">Ivan Chepurnyi</a> on <a
href="http://vimeo.com">Vimeo</a>.</p><h2>Next Seminar</h2><p>Also we are planning to make it on regular basis. Our goal is to provide at least one seminar a month.<br
/> So the next seminar possible topics are presented in the <a
href="https://docs.google.com/a/ecomdev.org/spreadsheet/viewform?formkey=dGFzZ1ZUN1hhX3YwT2lqNVVCTW5Eamc6MQ" title="EcomDev Free Online Seminar Topic Selection">voting form</a>. The most voted topic will be prepared for the one, that will be planned for October. Most probably at the end of the month.</p> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2011/09/16/magento-index-seminar-video-guide.html/feed</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Magento Index Functionality &#8211; Online Seminar on Sep 8th</title><link>http://www.ecomdev.org/2011/08/22/magento-index-functionality-online-seminar-on-sep-8th.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=magento-index-functionality-online-seminar-on-sep-8th</link> <comments>http://www.ecomdev.org/2011/08/22/magento-index-functionality-online-seminar-on-sep-8th.html#comments</comments> <pubDate>Mon, 22 Aug 2011 10:59:25 +0000</pubDate> <dc:creator>Ivan Chepurnyi</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[development]]></category> <category><![CDATA[index]]></category> <category><![CDATA[Magento]]></category> <category><![CDATA[seminar]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=5502</guid> <description><![CDATA[<p><img
class="alignright size-medium wp-image-5507" title="seminar" src="http://www.ecomdev.org/wp-content/uploads/2011/08/seminar-177x300.png" alt="" width="69" height="118" />We are committed  to sharing our knowledge about Magento architecture and improving quality of Magento Development around the world by writing some articles and providing training courses. But for us it is not enough, so we are going to start &#8230;</p>]]></description> <content:encoded><![CDATA[<p><img
class="alignright size-medium wp-image-5507" title="seminar" src="http://www.ecomdev.org/wp-content/uploads/2011/08/seminar-177x300.png" alt="" width="69" height="118" />We are committed  to sharing our knowledge about Magento architecture and improving quality of Magento Development around the world by writing some articles and providing training courses. But for us it is not enough, so we are going to start providing free online seminars for best practices in particular areas of Magento development. The first one is planned on September 8th 2011 from 16:00-17:30 CEST (Central European Summer Time), so try to make some room in your working schedule for it.</p><p><span
id="more-5502"></span></p><p>It is pity, but there will be only 20 places available, because of <a
title="GoToTraining" href="http://www.gotomeeting.com/fec/training/online_training" target="_blank">GoToTraining™</a> limitations. So we are starting pre-registration for this seminar with questions that will help us to select 20 attendees out of all the pre registrations. Don&#8217;t worry if you are not in selected 20 attendees, seminar will be recorded, so you can view it later.</p><p>Seminar Agenda:</p><ul><li>Overview of Magento Index module functionality (Workflow, Structure, Entities, etc)</li><li>Changes of Index Module in CE 1.6</li><li>Questions &amp; Answers (20 minutes)</li></ul><p>Add an event to you calendar: <a
href="http://www.ecomdev.org/wp-content/uploads/2011/08/Magento-Index-Seminar.ics">iCal</a></p><h2>UPDATE 06/09/2011</h2><h3>We increased the maximum number of attendees on our GoToTraining account, so now everyone can join the seminar! Please hurry up, the registration closes on Sep 7th at 23:59 CEST. Here is direct registration link: <a
href="http://bit.ly/op6vQ5" title="Register for Magento Indexes Seminar!">http://bit.ly/op6vQ5</a></h3> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2011/08/22/magento-index-functionality-online-seminar-on-sep-8th.html/feed</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>CheckItOut! new major release</title><link>http://www.ecomdev.org/2011/08/02/checkitout-major-release.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=checkitout-major-release</link> <comments>http://www.ecomdev.org/2011/08/02/checkitout-major-release.html#comments</comments> <pubDate>Tue, 02 Aug 2011 10:00:42 +0000</pubDate> <dc:creator>Ivan Chepurnyi</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[checkitout]]></category> <category><![CDATA[checkout]]></category> <category><![CDATA[extension]]></category> <category><![CDATA[Magento]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=5465</guid> <description><![CDATA[<p>Today a new version of <a
title="CheckItOut!" href="http://www.ecomdev.org/shop/checkout/checkitout.html">CheckitOut!</a> extension is released!<br
/> <span
id="more-5465"></span><br
/> <a
title="CheckItOut!" href="http://www.ecomdev.org/shop/checkout/checkitout.html" target="_blank"><img
class="alignleft" src="http://www.ecomdev.org/shop/media/catalog/product/cache/2/image/188x264/9df78eab33525d08d6e5fb8d27136e95/c/h/checkitout.png" alt="CheckItOut!" width="132" height="185" /></a><span
style="font-weight: bold;"><strong>Changes in release 1.2.0</strong></span></p><ul
style="margin-left: 132px;"><li><strong>Full support of Magento Enterprise features!</strong><br
/> Added core code support for such Enterprise Edition features:<ul><li><strong>Reward Points</strong></li><li><strong>Customer Balance</strong></li><li><strong>Gift Wrapping</strong></li><li><strong>Gift Receipt</strong></li><li><strong>Printed Card</strong></li></ul></li><li><strong>Support of </strong></li>&#8230;</ul>]]></description> <content:encoded><![CDATA[<p>Today a new version of <a
title="CheckItOut!" href="http://www.ecomdev.org/shop/checkout/checkitout.html">CheckitOut!</a> extension is released!<br
/> <span
id="more-5465"></span><br
/> <a
title="CheckItOut!" href="http://www.ecomdev.org/shop/checkout/checkitout.html" target="_blank"><img
class="alignleft" src="http://www.ecomdev.org/shop/media/catalog/product/cache/2/image/188x264/9df78eab33525d08d6e5fb8d27136e95/c/h/checkitout.png" alt="CheckItOut!" width="132" height="185" /></a><span
style="font-weight: bold;"><strong>Changes in release 1.2.0</strong></span></p><ul
style="margin-left: 132px;"><li><strong>Full support of Magento Enterprise features!</strong><br
/> Added core code support for such Enterprise Edition features:<ul><li><strong>Reward Points</strong></li><li><strong>Customer Balance</strong></li><li><strong>Gift Wrapping</strong></li><li><strong>Gift Receipt</strong></li><li><strong>Printed Card</strong></li></ul></li><li><strong>Support of Gift Messages functionality</strong></li><li><strong>Support for upcoming new version of <a
href="http://ebizmarts.com/sage-pay-suite">Ebizmarts SagePay</a> extension</strong><br
/> Patch for current version can be issued by request.</li><li><strong>Removed dependency on payment template.</strong><br
/> Now extension uses all core templates, except a template for the order review step.</li></ul><p>If you already bought or received extension for reviewing purposes, you can download it at &#8220;My Downloads&#8221; section on your <a
title="Customer Account" href="http://www.ecomdev.org/shop/customer/account/">account page</a> in our extensions shop.</p><h4><strong>Check Our <a
title="CheckItOut! Demo" href="http://bit.ly/mf6FTO">Demo Installment</a> for seeing new version in action!</strong></h4> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2011/08/02/checkitout-major-release.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Advanced Magento Training Week in Amsterdam!</title><link>http://www.ecomdev.org/2011/07/05/advanced-magento-training-week-in-amsterdam.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=advanced-magento-training-week-in-amsterdam</link> <comments>http://www.ecomdev.org/2011/07/05/advanced-magento-training-week-in-amsterdam.html#comments</comments> <pubDate>Tue, 05 Jul 2011 20:11:07 +0000</pubDate> <dc:creator>Ivan Chepurnyi</dc:creator> <category><![CDATA[Magento]]></category> <category><![CDATA[News]]></category> <category><![CDATA[training]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=5419</guid> <description><![CDATA[<p>Our company is happy to announce that there will be a series of <a
title="Magento Advanced Development" href="http://www.ecomdev.org/magento-development-training-programs/advanced" target="_blank">advanced training courses</a> from 2nd till 5th of August in Amsterdam. Training courses are organized by <a
title="Realvine - the e-commerce company" href="http://realvine.nl/" target="_blank">Realvine BV</a> &#8211; our training partner in the Netherlands.</p><p><span
id="more-5419"></span></p><p>The advanced &#8230;</p>]]></description> <content:encoded><![CDATA[<p>Our company is happy to announce that there will be a series of <a
title="Magento Advanced Development" href="http://www.ecomdev.org/magento-development-training-programs/advanced" target="_blank">advanced training courses</a> from 2nd till 5th of August in Amsterdam. Training courses are organized by <a
title="Realvine - the e-commerce company" href="http://realvine.nl/" target="_blank">Realvine BV</a> &#8211; our training partner in the Netherlands.</p><p><span
id="more-5419"></span></p><p>The advanced training week includes 3 different courses on the following topics:</p><h3>Magento Indexers €599,-</h3><p><strong>August 2nd</strong></p><ul><li>Index functionality advantages for Magento</li><li>Index Module Overview</li><li>Custom indexer creation</li><li>Catalog EAV  indexer (Layered Navigation)</li><li>Price Indexers</li><li>Product Visibility Indexers</li><li>Product Inventory Indexer</li><li>Catalog Search Indexer</li></ul><p>You can find more information about the topic by viewing <a
title="Magento Indexes slides from Magento Devs Meetup" href="http://slidesha.re/kOguNv" target="_blank">slides</a> from <a
title="Magento Developers Meetup in Amsterdam on June 17th" href="http://www.ecomdev.org/2011/06/10/magento-developers-meetup-in-amsterdam.html" target="_blank">Magento Developers Meetup in Amsterdam on June 17th</a>, there was one hour seminar concerning it.</p><h3>Behind Checkout &amp; Sales €999,-</h3><p><strong>August 3rd</strong></p><ul><li>Checkout Overview</li><li>Quote, Quote Address &amp; Items</li><li>Totals</li><li>Taxes</li><li>Payment &amp; Transaction</li><li>Shipping Estimation</li><li>Topics of the Second Day</li></ul><p><strong>August 4th</strong></p><ul><li>Sales After Checkout</li><li>Service Models</li><li>Order, Order Address &amp; Items</li><li>Invoices</li><li>Shipments</li><li>Credit Memos</li></ul><p>Really nice course for developers who want to write own payment/shipping module or write a customization to checkout process.</p><h3>Third-Party Integrations €599,-</h3><p><strong>August 5th</strong></p><ul><li>API vs Magento Module</li><li>Stock Management</li><li>Sales Export</li><li>Importing Shipments</li><li>Importing Creditmemos</li></ul><p>You do not know how to write fast and lightweight export / import of data to / from third-party system? Then this course is for you!</p><h3>Special Discounts!</h3><p>If you are attending more than one course, then we have nice special bundled prices for you, that are valid if you register <strong>before July 25th</strong></p><h4>Magento Indexes + Behind Checkout &amp; Sales + Third-Party Integrations <strong>€1999,-</strong></h4><h4>Behind Checkout &amp; Sales + Third-Party Integrations <strong>€1499,-</strong></h4><p
style="text-align: center;"><a
href="https://spreadsheets.google.com/a/ecomdev.org/spreadsheet/viewform?hl=en_US&amp;formkey=dGYydHZUc0xPT0JfdWNHNTU5NmplTGc6MQ#gid=0" target="_blank"><img
class="size-full wp-image-5438 aligncenter" title="Register Now!" src="http://www.ecomdev.org/wp-content/uploads/2011/07/cooltext537598533.png" alt="Register Now!" width="156" height="52" /></a></p> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2011/07/05/advanced-magento-training-week-in-amsterdam.html/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>CheckItOut! just got better!</title><link>http://www.ecomdev.org/2011/07/04/checkitout-just-got-better.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=checkitout-just-got-better</link> <comments>http://www.ecomdev.org/2011/07/04/checkitout-just-got-better.html#comments</comments> <pubDate>Mon, 04 Jul 2011 13:56:44 +0000</pubDate> <dc:creator>Ivan Chepurnyi</dc:creator> <category><![CDATA[Extensions]]></category> <category><![CDATA[News]]></category> <category><![CDATA[checkitout]]></category> <category><![CDATA[checkout]]></category> <category><![CDATA[extension]]></category> <category><![CDATA[Magento]]></category> <guid
isPermaLink="false">http://www.ecomdev.org/?p=5408</guid> <description><![CDATA[<p>Today a new version of <a
title="CheckItOut!" href="http://www.ecomdev.org/shop/checkout/checkitout.html">CheckitOut!</a> extension is released with stored addresses and smart validation features!<br
/> <span
id="more-5408"></span><br
/> <a
title="CheckItOut!" href="http://www.ecomdev.org/shop/checkout/checkitout.html" target="_blank"><img
class="alignleft" src="http://www.ecomdev.org/shop/media/catalog/product/cache/2/image/188x264/9df78eab33525d08d6e5fb8d27136e95/c/h/checkitout.png" alt="CheckItOut!" width="132" height="185" /></a></p><h4><strong>Changes in release 1.1.1</strong></h4><ul
style="margin-left: 132px;"><li><strong>Stored Addresses</strong><br
/> How many times your customers stop to fulfill order details because they forgot add something to cart? How</li>&#8230;</ul>]]></description> <content:encoded><![CDATA[<p>Today a new version of <a
title="CheckItOut!" href="http://www.ecomdev.org/shop/checkout/checkitout.html">CheckitOut!</a> extension is released with stored addresses and smart validation features!<br
/> <span
id="more-5408"></span><br
/> <a
title="CheckItOut!" href="http://www.ecomdev.org/shop/checkout/checkitout.html" target="_blank"><img
class="alignleft" src="http://www.ecomdev.org/shop/media/catalog/product/cache/2/image/188x264/9df78eab33525d08d6e5fb8d27136e95/c/h/checkitout.png" alt="CheckItOut!" width="132" height="185" /></a></p><h4><strong>Changes in release 1.1.1</strong></h4><ul
style="margin-left: 132px;"><li><strong>Stored Addresses</strong><br
/> How many times your customers stop to fulfill order details because they forgot add something to cart? How many times they were frustrated with empty address data after coming back on checkout page? With our checkout, you will not have this problems anymore. Customer&#8217;s address details will be stored during all the checkout process, even if customer goes back to shopping cart. (Of course except secure information, like passwords, credit card details, etc)</li><li><strong>Smart validation</strong><br
/> This version comes with more smart validation that is invoked only on fields that was just changed by customer and advises him what he is entering wrong on early steps!</li></ul><p>If you already bought or received extension for reviewing purposes, you can download it at &#8220;My Downloads&#8221; section on your <a
title="Customer Account" href="http://www.ecomdev.org/shop/customer/account/">account page</a> in our extensions shop.</p><h4><strong>Check Our <a
title="CheckItOut! Demo" href="http://bit.ly/mf6FTO">Demo Installment</a> for seeing new version in action!</strong></h4> ]]></content:encoded> <wfw:commentRss>http://www.ecomdev.org/2011/07/04/checkitout-just-got-better.html/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
