<?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>Classy Llama Studios - Specializing in Magento eCommerce, Magento Development, and Magento Design</title>
	<atom:link href="http://classyllama.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://classyllama.com</link>
	<description>Classy Llama Studios is a team of developers, designers and marketers specializing in Magento, Wordpress and Custom Web Application development.</description>
	<lastBuildDate>Tue, 06 Jul 2010 21:47:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Why Magento?  Why With Classy Llama Studios?</title>
		<link>http://classyllama.com/magento/why-magento-why-with-classy-llama-studios/</link>
		<comments>http://classyllama.com/magento/why-magento-why-with-classy-llama-studios/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 21:32:14 +0000</pubDate>
		<dc:creator>ktheobald</dc:creator>
				<category><![CDATA[Magento]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=760</guid>
		<description><![CDATA[Following is an excerpt from an e-mail I sent to a client that was considering building an eCommerce site from scratch and couldn&#8217;t understand the cost of building an effective eCommerce site on Magento considering it was &#8220;out-of-the-box&#8221; functional&#8230;
2.  To call what we do &#8220;design&#8221; is over-simplifying the reality.  Magento is a powerful foundation, but [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/magento/why-magento-why-with-classy-llama-studios/" title="Why Magento?  Why With Classy Llama Studios?"><img src="http://classyllama.com/wp-content/uploads/2010/07/BUY-Button-CLS-ProfessionalLicense-1.jpg" alt="" class="feed-image" /></a><p>Following is an excerpt from an e-mail I sent to a client that was considering building an eCommerce site from scratch and couldn&#8217;t understand the cost of building an effective eCommerce site on Magento considering it was &#8220;out-of-the-box&#8221; functional&#8230;</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">2.  To call what we do &#8220;design&#8221; is over-simplifying the reality.  Magento is a powerful foundation, but we build the house on top of that foundation that specifically accomplishes your goals.  This process consists of the initial consultation and exploration, wherein we understand your business and clarify your business goals, the UI design, wherein we gather, organize, and structure the content and functionality in such a way that drives conversions most effectively (a process that doesn&#8217;t end with the build, of course), the graphic design, wherein we make the UI beautiful, consistent, and attractive to the target audience/s, which further drives conversions.  Then we take the graphic design and build it to interface correctly on the Magento platform and with web browsers.  Then we train you and your team to manage the Magento admin effectively so that you aren&#8217;t bound by a &#8220;webmaster&#8221; to add products, change images, descriptions, videos, launch promotions, give discounts, change pricing, and on and on and on.  We want you to be in control of your e-commerce site as much as possible.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Also, when we build the site, we do so cognizant of potential future developments to ensure we don&#8217;t box in your options.  We build everything using SVN, which is the first line of defense against anything subpar making it live.  The second line of defense is our staging server, which gives us the closest thing to a live environment without it being publicly available.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Much of your value is already received by the time we&#8217;ve generated the graphic design.  The plans generated to build the house are critical to the ultimate success of the construction.  The construction needs to be quality, but there is a lot more competition in the ability to build a house than to design the house to accomplish the goals of the owners.  Don&#8217;t get me wrong; we build very, very well.  But without sharp, intelligent design, building is worthless.  You&#8217;re an eCommerce firm.  You need an eCommerce business, not a well-coded website.  We can talk more about this in our next dialogue, but I hope that provides you with some perspective on why the cost can be so high.  We do what we do very well, and we help businesses experience more success than they could achieve without us.  That&#8217;s what we&#8217;re offering you.This is an excert</div>
<p><br class="spacer_" /></p>
<p>First, Magento is a primarily an eCommerce platform that secondarily is plug-and-play &#8220;out-of-the-box.&#8221;  What that means is that thousands of development hours have been committed to generate the core functionality of Magento.  The fact that you can plug-and-play Magento to be a functional shopping cart is an added perk that opens up new opportunities.  To build an eCommerce platform that offers all of the functionality that Magento does would cost a minimum $15 million to recreate&#8230; and you wouldn&#8217;t even have the advantages that come along with it being an open-source application.  So building something from scratch will undoubtedly be massively inferior.</p>
<p><br class="spacer_" /></p>
<p>Second, to call what we do &#8220;design&#8221; is over-simplifying the reality.  Magento is a powerful foundation, but we build the house on top of that foundation that specifically accomplishes your goals.  This process consists of the initial consultation and exploration, wherein we understand your business and clarify your business goals, the UI design, wherein we gather, organize, and structure the content and functionality in such a way that drives conversions most effectively (a process that doesn&#8217;t end with the build, of course), the graphic design, wherein we make the UI beautiful, consistent, and attractive to the target audience/s, which further drives conversions.  Then we take the graphic design and build it to interface correctly on the Magento platform and with web browsers.  Then we train you and your team to manage the Magento admin effectively so that you aren&#8217;t bound by a &#8220;webmaster&#8221; to add products, change images, descriptions, videos, launch promotions, give discounts, change pricing, and on and on and on.  We want you to be in control of your e-commerce site as much as possible.</p>
<p><br class="spacer_" /></p>
<p>Third, when we build the site, we do so cognizant of potential future developments to ensure we don&#8217;t box in your options.  We build everything using SVN, which is the first line of defense against anything subpar making it live.  The second line of defense is our staging server, which gives us the closest thing to a live environment without it being publicly available. (<a title="The Three Lines of Defense" href="http://www.classyllama.com/custom-magento-development">Read about our Three Lines of Development Defense</a>)</p>
<p><br class="spacer_" /></p>
<p>Much of your value is already received by the time we&#8217;ve generated the graphic design.  The plans generated to build the house are critical to the ultimate success of the construction.  The construction needs to be quality, but there is a lot more competition in the ability to build a house than to design the house to accomplish the goals of the owners.  Don&#8217;t get me wrong; we build very, very well.  But without sharp, intelligent design, building is worthless.  You&#8217;re an eCommerce firm.  You need an eCommerce business, not a well-coded website.  We can talk more about this in our next dialogue, but I hope that provides you with some perspective on why the cost can be so high.  We do what we do very well, and we help businesses experience more success than they could achieve without us.  That&#8217;s what we&#8217;re offering you.  (<a title="Classy Llama Magento Design" href="http://www.classyllama.com/magento-design">Read more about our Magento design approach</a>)</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/magento/why-magento-why-with-classy-llama-studios/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Operating in Trust</title>
		<link>http://classyllama.com/general-business/operating-in-trust/</link>
		<comments>http://classyllama.com/general-business/operating-in-trust/#comments</comments>
		<pubDate>Thu, 20 May 2010 21:09:07 +0000</pubDate>
		<dc:creator>rtull</dc:creator>
				<category><![CDATA[General Business]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=631</guid>
		<description><![CDATA[One of the things that we treasure most here at Classy Llama Studios is trust. We operate as a very close knit team, in an environment that is open, free and flexible. Its an incredibly powerful way to operate, and makes working together a beautiful experience because we don&#8217;t waste time on politics or power [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/general-business/operating-in-trust/" title="Operating in Trust"><img src="http://classyllama.com/wp-content/uploads/2010/05/trust.jpg" alt="" class="feed-image" /></a><p>One of the things that we treasure most here at Classy Llama Studios is trust. We operate as a very close knit team, in an environment that is open, free and flexible. Its an incredibly powerful way to operate, and makes working together a beautiful experience because we don&#8217;t waste time on politics or power plays or jockeying for position. Everyone strives for the good of the team and the growth of our clients, and the synergy that is created by that is very powerful.</p>
<p>But maintaining an operating environment like this isn&#8217;t easy, and it requires above almost everything else that everyone on the team have a mutual trust and respect for each other. To work in an environment where you are very open, about everything including your faults, means that people have more opportunities than they would in many companies to hurt you. If you&#8217;re afraid of being damaged by something you say, or by expressing vulnerability in some fashion, you&#8217;re going to have a hard time being open.</p>
<p>In order to be open, to really work together, you have to believe in the quality and the intentions of the people around you. If you doubt your team members, if you always have questions in the back of your mind about whether or not they are really working for your best interest and looking out for those around them, then you won&#8217;t be able to be open. Instead, you&#8217;ll be operating in a very protective fashion. You have to guard yourself because you are the only one who is looking out for you.</p>
<p>The problem with operating in this fashion is that it is inefficient, stressful and a detriment to building a solid team. When everyone in a team concerned with guarding their rear, jockeying for position and making sure that there are no chinks in their armor, they spend more time being cautious and dancing around trying to find the highest ground than they do actually being productive.</p>
<p>The beautiful thing is that here at CLS, we don&#8217;t have to do that. We operate in an environment where it is okay to let down your guard because everyone else on the team isn&#8217;t a bunch of bloodthirsty piranhas looking for a weak moment to take you out. Instead, everyone here works toward helping everyone else out.</p>
<p>It really is the best way to operate. When you see a weakness in a fellow team member, you don&#8217;t jump on them and find a way to exploit the opportunity to make yourself look better. Instead, you strive to help that team member grow. You show them how to be stronger, how to improve, how to better themselves as a worker and a person. You flex as needed to help everyone find the best fit and role for themselves.</p>
<p>When this is the approach that everyone on a team is taking, you don&#8217;t have to defend yourself all the time. Instead, you can focus on doing things to really serve people. Here at Classy Llama Studios our goal is to selflessly serve the best interests of the other people on our team and our clients. It sound dangerous, serving selflessly. Doing things without worrying about yourself. But when you have a team of people who believe in trust and growth, who believe in really serving each other, then it really is very safe. Instead of you looking out for you, you have many people looking out for you. Everyone has your back, and you are free to run with the tasks you&#8217;ve been given.</p>
<p>Don&#8217;t waste time building an organization based on politicking and posturing and protecting yourself. Instead, focus on building a team where you can trust the people around you. Find people to work with who are solid folks, who care about those around them… and then trust them to be who you believe they are! When you can begin to trust the people around and live and work in an environment where people are watching your back for you instead of trying to stab it, you&#8217;ll get more done, you&#8217;ll be much happier, and ultimately you&#8217;ll be free to serve and protect and build up those around you &#8211; because you trust the people around you to do the same for you.</p>
<p>Trust is a choice. You can know a lot about a person, but choosing to trust them is an act of your will. It does mean you&#8217;re at risk of getting hurt, but if you are willing to trust the quality people around you, you might find yourself beginning to lose the armor, and instead be free to run a little faster, to work a little better and to breathe a little easier. Its a beautiful thing.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/general-business/operating-in-trust/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Productive Distractions</title>
		<link>http://classyllama.com/general-business/productive-distractions/</link>
		<comments>http://classyllama.com/general-business/productive-distractions/#comments</comments>
		<pubDate>Tue, 11 May 2010 13:35:21 +0000</pubDate>
		<dc:creator>jwells</dc:creator>
				<category><![CDATA[General Business]]></category>
		<category><![CDATA[Breaks]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=574</guid>
		<description><![CDATA[What is it that makes people hate their jobs?
&#8220;I don&#8217;t get paid enough?&#8221;  Possibly.
&#8220;My boss is an idiot.&#8221;  Feasible.
&#8220;The hours are too long.&#8221;  Perhaps.
&#8220;I&#8217;m not productive enough.&#8221;  &#8230; HUH?
That&#8217;s not something you&#8217;ll hear often.  You&#8217;ll never hear someone complain that they&#8217;re not productive enough; probably because they&#8217;d get fired.
Why is this question avoided so often? [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/general-business/productive-distractions/" title="Productive Distractions"><img src="http://classyllama.com/wp-content/uploads/2010/05/milton-600x80.jpg" alt="" class="feed-image" /></a><p><img class="alignnone size-full wp-image-577" title="milton" src="http://classyllama.com/wp-content/uploads/2010/05/milton.jpeg" alt="milton" width="600" height="400" /></p>
<p>What is it that makes people hate their jobs?</p>
<p>&#8220;I don&#8217;t get paid enough?&#8221;  Possibly.</p>
<p>&#8220;My boss is an idiot.&#8221;  Feasible.</p>
<p>&#8220;The hours are too long.&#8221;  Perhaps.</p>
<p>&#8220;I&#8217;m not productive enough.&#8221;  &#8230; HUH?</p>
<p>That&#8217;s not something you&#8217;ll hear often.  You&#8217;ll never hear someone complain that they&#8217;re not productive enough; probably because they&#8217;d get fired.</p>
<p>Why is this question avoided so often?  I believe that productivity, or lack thereof, can play a huge part in how fulfilling a person&#8217;s job can be.  Doesn&#8217;t it make sense for someone to be frustrated?  5 days per week, working 8-10 hours doing nothing, accomplishing very little, and making zero progress?  Sounds like fun, eh?</p>
<p>Sadly, too many people believe this is the only option; they&#8217;ll have to deal with it for the rest of their lives; just holding out until retirement.  Then!&#8230; Then they&#8217;ll be able to finally enjoy life and experience fulfillment.  But until then, they just have to grit their teeth and deal with the dismal day that is their job.</p>
<p>At this point many of you are probably asking, &#8220;So how do I stop hating my job and start enjoying it?&#8221;</p>
<p><strong>1. Leave your expectations for the day at the doorstep.</strong></p>
<p style="padding-left: 30px;"><em>Many of us plan out a boring day the night before, or the morning of our job.  We already know what to expect, the same thing as always.  You&#8217;ve probably heard this referred to as &#8220;self fulfilling prophesy&#8221;.  This doesn&#8217;t have to be the case.  How about letting the day determine that for itself?  And if you absolutely insist on having expectations, maybe try having positive expectations for a change.</em></p>
<p><strong>2.  Get to know your co-workers</strong></p>
<p style="padding-left: 30px;"><em>It&#8217;s very comfortable for people to just clock in, and clock out.  Grab your paycheck and head home.  Try to get to know your co-workers and maybe even outside your job.  Maybe you&#8217;ll share a common interest and who knows, maybe even be &#8230; friends!  Believe me, working alongside people you know and have something in common with can make a world of a difference.</em></p>
<p><strong>3.  Welcome Critiques, but don&#8217;t take them personally</strong></p>
<p style="padding-left: 30px;"><em>Don&#8217;t get mad if someone makes a suggestion.  Take all critiques and criticism in stride.  Learn from it, and move on.</em></p>
<p><strong>4.  Be Proactive</strong></p>
<p style="padding-left: 30px;"><em>Take charge of your tasks.  If you finish what you had planned for the day ask to take on something else.  Or study and research.  Take initiative on developing your personal knowledge and skill in your field of work.</em></p>
<p><strong>5.  TAKE BREAKS&#8230; Often!</strong></p>
<p style="padding-left: 30px;"><em>&#8220;Oh no!  If I take a break, won&#8217;t I be breaking some rule or something?&#8221;  No.</em></p>
<p style="padding-left: 30px;"><em>In fact, </em><a href="http://www.business.com/guides/escaping-your-cubicle-during-the-work-day-6824/" target="_blank"><em>studies have shown</em></a><em> that periodic breaks throughout the work day are beneficial to productivity.  This is what I like to call &#8220;Productive Distractions&#8221;.  Breaks like these will help you clear your mind, regain your focus and feel refreshed.</em></p>
<p>Working at Classy Llama Studios is an incredible experience.  Productivity is high, but we still have fun.  It&#8217;s a great dynamic that is hard to find in a work environment.  Not every office can fit into the same mold, but hopefully small adjustments like these can help make your 40 hours a week more enjoyable.</p>
<div id="attachment_617" class="wp-caption alignnone" style="width: 607px"><img class="size-full wp-image-617" title="productive-distractions" src="http://classyllama.com/wp-content/uploads/2010/05/productive-distractions.jpg" alt="productive-distractions" width="597" height="398" /><p class="wp-caption-text">A snapshot of our favorite past-time around the office.  Hacky Sack. (From left to right: Kristian, Rob, Erik, Kevin)</p></div>
<p><span style="font-size: small;"><span><br />
 </span></span></p>
<div id="attachment_607" class="wp-caption alignnone" style="width: 609px"><img class="size-full wp-image-607" title="CLS" src="http://classyllama.com/wp-content/uploads/2010/05/CLS-productivity.jpg" alt="CLS" width="599" height="399" /><p class="wp-caption-text">Project kick-off meeting. (From left to right: Joey, Kurt, Rob, Erik, Joshua)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/general-business/productive-distractions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enabling Xdebug&#8217;s Exception Handler in Magento</title>
		<link>http://classyllama.com/development/magento-development/enabling-xdebugs-exception-handler-in-magento/</link>
		<comments>http://classyllama.com/development/magento-development/enabling-xdebugs-exception-handler-in-magento/#comments</comments>
		<pubDate>Sat, 08 May 2010 20:22:49 +0000</pubDate>
		<dc:creator>ehansen</dc:creator>
				<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=558</guid>
		<description><![CDATA[Magento&#8217;s default error and exception handlers provide more information than the default php handlers, as they print out a basic backtrace (example) as opposed to just printing out the file and line number of the error but there are many times when Magento&#8217;s handlers just don&#8217;t cut it; times when you need to see the [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/enabling-xdebugs-exception-handler-in-magento/" title="Enabling Xdebug's Exception Handler in Magento"><img src="http://classyllama.com/wp-content/uploads/2010/05/XdebugException-718x80.png" alt="" class="feed-image" /></a><p>Magento&#8217;s default error and exception handlers provide more information than the default php handlers, as they print out a <em>basic</em> backtrace (<a href="http://classyllama.com/wp-content/uploads/2009/12/Screen-shot-2009-12-30-at-8.10.01-AM.png">example</a>) as opposed to just printing out the file and line number of the error but there are many times when Magento&#8217;s handlers just don&#8217;t cut it; times when you need to see the fully expanded variables that get passed to the functions/methods in the backtrace.</p>
<p>In the <a href="http://classyllama.com/development/magento-development/magento-initial-setup/">Initial Magento Setup Development Tips</a> blog post, I wrote about how Xdebug overrides the default php error handler with a detailed, customizable error backtrace.  I explained how to modify Magento&#8217;s core code so that php errors get handled by Xdebug, not Magento&#8217;s default <em>error</em> handler.  </p>
<p>In this blog post, I&#8217;m going to explain how to modify Magento so that exceptions get handled by Xdebug, not Magento&#8217;s default <em>exception</em> handler.</p>
<p>The Mage::run() method is the method that gets the entire Magento request cycle started, so it makes sense that this is where the exceptions get handled:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p558code3'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p5583"><td class="code" id="p558code3"><pre class="php" style="font-family:monospace;">    <span style="color: #009933; font-style: italic;">/**
     * Front end main entry point
     *
     * @param string $code
     * @param string $type
     * @param string|array $options
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> run<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$type</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'store'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #339933;">=</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        try <span style="color: #009900;">&#123;</span>
            Varien_Profiler<span style="color: #339933;">::</span><span style="color: #004000;">start</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mage'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">setRoot</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_app</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Mage_Core_Model_App<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_events</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Varien_Event_Collection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_config</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Mage_Core_Model_Config<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_app</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">run</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
                <span style="color: #0000ff;">'scope_code'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$code</span><span style="color: #339933;">,</span>
                <span style="color: #0000ff;">'scope_type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$type</span><span style="color: #339933;">,</span>
                <span style="color: #0000ff;">'options'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$options</span><span style="color: #339933;">,</span>
            <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            Varien_Profiler<span style="color: #339933;">::</span><span style="color: #004000;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mage'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span>Mage_Core_Model_Session_Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <a href="http://www.php.net/header"><span style="color: #990000;">header</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Location: '</span> <span style="color: #339933;">.</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">getBaseUrl</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span>Mage_Core_Model_Store_Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">getBaseDir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> DS <span style="color: #339933;">.</span> <span style="color: #0000ff;">'errors'</span> <span style="color: #339933;">.</span> DS <span style="color: #339933;">.</span> <span style="color: #0000ff;">'404.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">isInstalled</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_isDownloader</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">printException</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <a href="http://www.php.net/exit"><span style="color: #990000;">exit</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            try <span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">dispatchEvent</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mage_run_exception'</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'exception'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/headers_sent"><span style="color: #990000;">headers_sent</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <a href="http://www.php.net/header"><span style="color: #990000;">header</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Location:'</span> <span style="color: #339933;">.</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">getUrl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'install'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">printException</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$ne</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">printException</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ne</span><span style="color: #339933;">,</span> <span style="color: #000088;">$e</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>The problem with the above code is that any exceptions that get thrown by any Magento code get handled by the Mage::printException() method.  What we need to do is run the essential code without wrapping it in any try/catch blocks if the developer mode is enabled from the index.php <em>(see this <a href="http://classyllama.com/wp-content/uploads/2009/12/Screen-shot-2009-12-30-at-8.10.01-AM.png">blog post</a> for an example of how to automatically enable developer mode on development or staging sites)</em>.  This will result in all exceptions being handled by the Xdebug exception handler.  Here is the resulting code:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p558code4'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p5584"><td class="code" id="p558code4"><pre class="php" style="font-family:monospace;">    <span style="color: #009933; font-style: italic;">/**
     * Front end main entry point
     *
     * @param string $code
     * @param string $type
     * @param string|array $options
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> run<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$type</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'store'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #339933;">=</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">getIsDeveloperMode</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            try <span style="color: #009900;">&#123;</span>
                Varien_Profiler<span style="color: #339933;">::</span><span style="color: #004000;">start</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mage'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">setRoot</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_app</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Mage_Core_Model_App<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_events</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Varien_Event_Collection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_config</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Mage_Core_Model_Config<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_app</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">run</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
                    <span style="color: #0000ff;">'scope_code'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$code</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'scope_type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$type</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'options'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$options</span><span style="color: #339933;">,</span>
                <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                Varien_Profiler<span style="color: #339933;">::</span><span style="color: #004000;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mage'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span>Mage_Core_Model_Session_Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <a href="http://www.php.net/header"><span style="color: #990000;">header</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Location: '</span> <span style="color: #339933;">.</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">getBaseUrl</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span>Mage_Core_Model_Store_Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">getBaseDir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> DS <span style="color: #339933;">.</span> <span style="color: #0000ff;">'errors'</span> <span style="color: #339933;">.</span> DS <span style="color: #339933;">.</span> <span style="color: #0000ff;">'404.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">isInstalled</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_isDownloader</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">printException</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <a href="http://www.php.net/exit"><span style="color: #990000;">exit</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                try <span style="color: #009900;">&#123;</span>
                    <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">dispatchEvent</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mage_run_exception'</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'exception'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/headers_sent"><span style="color: #990000;">headers_sent</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <a href="http://www.php.net/header"><span style="color: #990000;">header</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Location:'</span> <span style="color: #339933;">.</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">getUrl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'install'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">printException</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$ne</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">printException</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ne</span><span style="color: #339933;">,</span> <span style="color: #000088;">$e</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// If we're running in developer mode, we want all exceptions to be handled by the php|xdebug error handler</span>
            Varien_Profiler<span style="color: #339933;">::</span><span style="color: #004000;">start</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mage'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">setRoot</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_app</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Mage_Core_Model_App<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_events</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Varien_Event_Collection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_config</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Mage_Core_Model_Config<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$_app</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">run</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
                <span style="color: #0000ff;">'scope_code'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$code</span><span style="color: #339933;">,</span>
                <span style="color: #0000ff;">'scope_type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$type</span><span style="color: #339933;">,</span>
                <span style="color: #0000ff;">'options'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$options</span><span style="color: #339933;">,</span>
            <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            Varien_Profiler<span style="color: #339933;">::</span><span style="color: #004000;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mage'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>This code allows Xdebug&#8217;s exception handler to do its magic, resulting in fully detailed exception backtraces like this:</p>
<p><a href="http://classyllama.com/wp-content/uploads/2010/05/XdebugException.png"><img src="http://classyllama.com/wp-content/uploads/2010/05/XdebugException-718x330.png" alt="XdebugException" title="XdebugException" width="718" height="330" class="aligncenter size-large wp-image-568" /></a></p>
<p>Hopefully this little trick allows you to code Magento more effectively!</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/enabling-xdebugs-exception-handler-in-magento/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Track Inventory for Configurable Products</title>
		<link>http://classyllama.com/development/magento-development/track-inventory-for-configurable-products/</link>
		<comments>http://classyllama.com/development/magento-development/track-inventory-for-configurable-products/#comments</comments>
		<pubDate>Sat, 08 May 2010 19:25:58 +0000</pubDate>
		<dc:creator>ehansen</dc:creator>
				<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=539</guid>
		<description><![CDATA[We recently had a client who needed to be able to manage inventory for configurable products in Magento.  Since configurable products are intended to merely group simple products together, the ability to track inventory for configurable products is not something that is possible in a vanilla Magento install.
I dug into the Magento codebase to [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/track-inventory-for-configurable-products/" title="Track Inventory for Configurable Products"><img src="http://classyllama.com/wp-content/uploads/2010/05/ConfigurableInventory-718x80.jpg" alt="" class="feed-image" /></a><p>We recently had a client who needed to be able to manage inventory for configurable products in Magento.  Since configurable products are intended to merely group simple products together, the ability to track inventory for configurable products is not something that is possible in a vanilla Magento install.</p>
<p>I dug into the Magento codebase to better understand how inventory is managed for the different product types in Magento.  As you could probably guess, the CatalogInventory module handles all of Magento&#8217;s inventory management.  In side of the /app/code/core/Mage/CatalogInventory/etc/config.xml file, you&#8217;ll find the following section of xml contained in the global tag:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p539code6'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p5396"><td class="code" id="p539code6"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;catalog<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;product<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;simple<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;is_qty<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/is_qty<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/simple<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;virtual<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;is_qty<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/is_qty<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/virtual<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configurable<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;stock_indexer<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>cataloginventory/indexer_stock_configurable<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/stock_indexer<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configurable<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;grouped<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;stock_indexer<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>cataloginventory/indexer_stock_grouped<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/stock_indexer<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/grouped<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/product<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/catalog<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>This section of xml is used by Mage_CatalogInventory_Helper_Data::getIsQtyTypeIds method to determine if a certain product type &#8220;qualifies&#8221; for inventory tracking.  It is also used to indicate if there is a custom resource model that needs to be used to calculate the stock availability for a certain product type. </p>
<p>The beautiful thing about the way Magento handles the configuration xml is that we can create xml nodes that mirror the structure of the above xml in a config.xml file in a custom module &#8211; this allows us to change pretty much any configuration value without having to touch any of the config.xml files of core Magento modules.  Magento will then merge the xml nodes from both config.xml files.  Since custom modules are loaded after core modules, any nodes that override default Magento nodes will take precedence.</p>
<p>I created a <a href="http://classyllama.com/wp-content/uploads/2010/05/ConfigurableInventory.tgz" target="_blank">small module</a> that enables inventory tracking for configurable products.  The following sections in Magento are overridden by this module:</p>
<ul>
<li>app/code/core/Mage/CatalogInventory/Model/Observer.php (lines 365 &#8211; 405)</li>
<li>app/code/core/Mage/CatalogInventory/etc/config.xml (line 202)</li>
<li>app/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml (line 55)</li>
</ul>
<p>You can download this module <a href="http://classyllama.com/wp-content/uploads/2010/05/ConfigurableInventory.tgz" target="_blank">here</a>.  All you need to do to install the module is to copy the app folder into your Magento install folder.  Note:</p>
<ul>
<li>There are two different ways of tracking inventory for configurable products.  Read the comments in the app/code/local/CLS/ConfigurableInventory/etc/config.xml file for details.</li>
<li>This module is built for Magento 1.4.0.1.  It&#8217;ll likely work on older versions of Magento, but I&#8217;ve only tested it on 1.4.0.1</li>
</ul>
<blockquote><p>UPDATE (5/12/10):  After working with this test module on a dev site, it looks like the $item->getProduct() method call on line 21 in the CLS_ConfigurableInventory_Model_CatalogInventory_Observer class actually isn&#8217;t returning a product model for all order items.  This is something that I&#8217;ll be debugging once we actually implement this test code in a project.  I&#8217;ll try to post an update here when we do that.</p></blockquote>
<p>I&#8217;d love to hear from any of you that end up implementing this code on your site.</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/track-inventory-for-configurable-products/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Displaying Magento Tiered Pricing on the Category List View</title>
		<link>http://classyllama.com/development/magento-development/magento-tiered-pricing-on-category-list-view/</link>
		<comments>http://classyllama.com/development/magento-development/magento-tiered-pricing-on-category-list-view/#comments</comments>
		<pubDate>Wed, 05 May 2010 16:56:53 +0000</pubDate>
		<dc:creator>rtull</dc:creator>
				<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=497</guid>
		<description><![CDATA[In this article, I&#8217;ll be outlining how to display Magento&#8217;s tiered pricing on the category list view.
Displaying full tiered pricing information on the category list view is not enabled in the default Magento themes. Rather, each product that has tiered pricing available simply adds a line underneath the default price information that indicates the lowest [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/magento-tiered-pricing-on-category-list-view/" title="Displaying Magento Tiered Pricing on the Category List View"><img src="http://classyllama.com/wp-content/uploads/2010/05/tier_price_list.jpg" alt="" class="feed-image" /></a><p>In this article, I&#8217;ll be outlining how to display Magento&#8217;s tiered pricing on the category list view.</p>
<p>Displaying full tiered pricing information on the category list view is not enabled in the default Magento themes. Rather, each product that has tiered pricing available simply adds a line underneath the default price information that indicates the lowest tier price available. For example: &#8220;As low as: $1.00&#8243;. This is nice, but doesn&#8217;t give us any information about what the different pricing levels are unless we click through to the actual product page.</p>
<p>Adding full tiered pricing information to this category list view is pretty simple. First, we&#8217;ll need to load full tiered pricing data on the product object, because the default category collection doesn&#8217;t include this data on the products. To do this, add the following lines immediately inside of the <code>foreach()</code> loop in your catalog/product/list.phtml template (lines <strong>44</strong> and <strong>86</strong> in the base/default/template/catalog/category/product/list.phtml as of version 1.4.0.1):</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p497code9'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p4979"><td class="code" id="p497code9"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
    <span style="color: #000088;">$attribute</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getResource</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'tier_price'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$attribute</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$attribute</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getBackend</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">afterLoad</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_product</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>This checks each product for a <code>tier_price</code> attribute, and if it exists, if the runs the <code>_afterLoad()</code> method from the <code>tier_price</code> attribute&#8217;s backend model to go through the tier price data, parse it out, and add it to the product model.</p>
<p>Once the data has been loaded, actually displaying the tiered prices is fairly easy. Locate the call to <code>getPriceHtml()</code> inside of the foreach loop in the list.phtml template (lines <strong>55</strong> and <strong>96</strong> in the base/default list.phtml). First, change the second parameter of the <code>getPriceHtml()</code> method from <code>'true'</code> to <code>'false'</code>, to get rid of the &#8220;As low as…&#8221; text, and then immediately after the line containing <code>getPriceHtml()</code> add the following code:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p497code10'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p49710"><td class="code" id="p497code10"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getTierPriceHtml</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_product</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getTierPriceHtml</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_product</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>This will check to see if tiered pricing data is available, and if it is, it will display it for each product on the category list. And that&#8217;s it! Check out an upcoming blog post for information on how to modify the tiered pricing display to show tiered pricing in a table format instead of Magento&#8217;s default format.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/magento-tiered-pricing-on-category-list-view/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Disabling Javascript Merging in Magento</title>
		<link>http://classyllama.com/development/magento-development/disabling-javascript-merging-in-magento/</link>
		<comments>http://classyllama.com/development/magento-development/disabling-javascript-merging-in-magento/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 20:39:14 +0000</pubDate>
		<dc:creator>ehansen</dc:creator>
				<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=481</guid>
		<description><![CDATA[If you have ever written Javascript for Magento, you have probably been frustrated by the fact that Magento merges all of its JS files before outputting them to the frontend.  This makes debugging difficult for a few of reasons:

It makes it more difficult to see if your JS file is even being loaded
When Firebug [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/disabling-javascript-merging-in-magento/" title="Disabling Javascript Merging in Magento"><img src="http://classyllama.com/wp-content/uploads/2010/03/Screen-shot-2010-03-28-at-6.09.51-PM-718x80.png" alt="" class="feed-image" /></a><p>If you have ever written Javascript for Magento, you have probably been frustrated by the fact that Magento merges all of its JS files before outputting them to the frontend.  This makes debugging difficult for a few of reasons:</p>
<ul>
<li>It makes it more difficult to see if your JS file is even being loaded</li>
<li>When Firebug (or your JS debugger of choice) logs errors to the console, it&#8217;s impossible to match up the line numbers Firebug reports with the line numbers in the file</li>
<li>If you want to use Firebug&#8217;s <a href="http://getfirebug.com/javascript">debugging or profiling tools</a>, you&#8217;re greatly impaired by having all the JS in one file.
</ul>
<p>A few months ago, one of our developers stumbled across the ability to disable the JS merging in Magento:  Go to System > Preferences > Developer > Javascript Settings tab > Set &#8220;Merge JavaScript Files&#8221; to &#8220;No&#8221;.</p>
<p><a href="http://classyllama.com/wp-content/uploads/2010/03/Screen-shot-2010-03-28-at-6.09.51-PM.png"><img src="http://classyllama.com/wp-content/uploads/2010/03/Screen-shot-2010-03-28-at-6.09.51-PM.png" alt="DisableJsMerging" title="DisableJsMerging" width="718" height="124" class="alignleft size-full wp-image-486" /></a></p>
<p>I hope this helps in your Magento Javascript debugging!</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/disabling-javascript-merging-in-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viewing Error Backtraces for Ambiguous Error Messages</title>
		<link>http://classyllama.com/development/magento-development/viewing-error-backtraces-for-ambiguous-error-messages/</link>
		<comments>http://classyllama.com/development/magento-development/viewing-error-backtraces-for-ambiguous-error-messages/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 21:10:43 +0000</pubDate>
		<dc:creator>ehansen</dc:creator>
				<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=472</guid>
		<description><![CDATA[There are many times when working with the Magento frontend that I get very ambiguous error message.  Here is a screenshot of the type of error I&#8217;m talking about:


I usually just search the entire codebase for the error message code, locate the place where the exception is getting caught, and then temporarily modify the [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/viewing-error-backtraces-for-ambiguous-error-messages/" title="Viewing Error Backtraces for Ambiguous Error Messages"><img src="http://classyllama.com/wp-content/uploads/2010/03/Screen-shot-2010-03-19-at-3.55.53-PM-718x80.png" alt="" class="feed-image" /></a><p>There are many times when working with the Magento frontend that I get very ambiguous error message.  Here is a screenshot of the type of error I&#8217;m talking about:<br />
<a href="http://classyllama.com/wp-content/uploads/2010/03/Screen-shot-2010-03-19-at-3.55.53-PM1.png"><img src="http://classyllama.com/wp-content/uploads/2010/03/Screen-shot-2010-03-19-at-3.55.53-PM1.png" alt="Error Message" title="Error Message" width="718" height="168" class="alignleft size-full wp-image-475" /></a>
</p>
<p>I usually just search the entire codebase for the error message code, locate the place where the exception is getting caught, and then temporarily modify the code to Mage::log() the following data: $e->getMessage(), $e->getTraceAsString(), etc&#8230;</p>
<p>I just came across an exception handler in the Mage_Checkout_MultishippingController class that passed the generic exception message as well as the Exception class itself to Mage::getSingleton(&#8217;checkout/session&#8217;)->addException(). Here&#8217;s the code (from line 219 of the containing file):</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p472code12'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p47212"><td class="code" id="p472code12"><pre class="php" style="font-family:monospace;">        catch <span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            Mage<span style="color: #339933;">::</span><span style="color: #004000;">getSingleton</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'checkout/session'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addException</span><span style="color: #009900;">&#40;</span>
                <span style="color: #000088;">$e</span><span style="color: #339933;">,</span>
                Mage<span style="color: #339933;">::</span><span style="color: #004000;">helper</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'checkout'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Data saving problem'</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_redirect<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'*/*/addresses'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>I dug into the Mage::getSingleton(&#8217;checkout/session&#8217;)->addException() class and realized that it logged the exception code to the var/logs/exception.log file (it only logs the exception if logging is enabled in System > Preferences > Developer).  This means that instead of locating and hacking up core files to see exceptions that are thrown, in a lot of cases, you can just monitor the contents of the exception.log file.</p>
<p>If you&#8217;re developing on a Mac machine, you can monitor the contents of the exception.log file using the Console app.  If you&#8217;re on a Linux box, you can use &#8220;tail -f var/log/exception.log&#8221; to monitor the contents of this file.</p>
<p>Hopefully this helps you in your debugging efforts!</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/viewing-error-backtraces-for-ambiguous-error-messages/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Evaluation Process:  An Introduction to the Perceived Cost/Benefit Relationship</title>
		<link>http://classyllama.com/magento/the-evaluation-process-an-introduction-to-the-perceived-cost-benefit-relationship/</link>
		<comments>http://classyllama.com/magento/the-evaluation-process-an-introduction-to-the-perceived-cost-benefit-relationship/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 22:43:37 +0000</pubDate>
		<dc:creator>ktheobald</dc:creator>
				<category><![CDATA[Magento]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=398</guid>
		<description><![CDATA[Before I drill down into the actual Value Presentation, it is important to have a complete understanding of the relationship between Perceived Value and Perceived Cost, which I briefly mentioned in the previous article on Traffic Quality.
We are evaluating things all the time.  We don&#8217;t even recognize much of the evaluation that takes place.  It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/magento/the-evaluation-process-an-introduction-to-the-perceived-cost-benefit-relationship/" title="The Evaluation Process:  An Introduction to the Perceived Cost/Benefit Relationship"><img src="http://classyllama.com/wp-content/uploads/2010/03/Phase-Impression-612x80.jpg" alt="The First Impression Phase" class="feed-image" /></a><p>Before I drill down into the actual Value Presentation, it is important to have a complete understanding of the relationship between Perceived Value and Perceived Cost, which I briefly mentioned in the previous article on <strong><a title="Improving Traffic Quality" href="http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-analyzing-and-improving-traffic-quality/">Traffic Quality</a></strong>.</p>
<p>We are evaluating things all the time.  We don&#8217;t even recognize much of the evaluation that takes place.  It&#8217;s usually automatic, subconscious.</p>
<p>This process of evaluation can be broken down into the rising and falling of two perceptions:  Perceived Cost and Perceived Benefit.  To be clear, the cost of something is not just money.  Cost is the receipt of something negative or the release of something positive whereas Benefit is the release of something negative or the receipt of something positive.  When you buy insurance, you give up something positive (your money, your mental energy to think through all the insurance options, and your time talking to the pesky insurance agent), which altogether represents your Cost.  How valuable that Cost is to you depends on your perception, which is why Perceived Cost is what truly matters.  If you sacrifice the Cost, you lose something negative (a certain degree of risk in your life) and you gain something positive (peace of mind), which altogether is your Benefit.  How valuable that is, again, depends on your perception and subjective evaluation of that Benefit.  I&#8217;m sure the insurance agents reading this are howling at how much I just oversimplified their jobs.  My apologies.</p>
<p>This is nothing new, though.  This is elementary sales, which is why I&#8217;m not going to spend anymore of my or your time regurgitating it.  I&#8217;ll tell you about something unique.</p>
<p>As I was thinking about these concepts of Perceived Cost and Benefit and the process of evaluation, I didn&#8217;t like how intangible it was.  I wanted to be able to &#8220;see&#8221; what that internal process looks like, so I created a graph to represent it.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<div class="mceTemp">
<dl id="attachment_456" class="wp-caption " style="width: 690px;">
<dt><img title="Perceived Cost/Benefit Chart:  First Impression Phase" src="http://classyllama.com/wp-content/uploads/2010/03/Phase-Impression26.jpg" alt="Perceived Cost/Benefit Chart:  First Impression Phase" width="680" height="407" /></dt>
<dd>Perceived Cost/Benefit Chart:  First Impression Phase (Chart Designed by Kevin Kirchner)</dd>
</dl>
</div>
<p>Any time a value presentation is made, be it a candy bar in the checkout rack at a grocery store, a pair of earrings online, or a proposal to marry, there is an initial phase when you open your mind &#8220;file cabinet&#8221; and pull the &#8220;folder&#8221; associated with whatever value is being presented.  As you open this folder, certain things will jump out at you, influencing your initial perceived cost and benefit of the value presented.  What is in that folder, what items you pull first, and how much each item affects you depends on two things:</p>
<p>1.  Your history with the value presented</p>
<p>2.  How it is initially presented</p>
<p><br class="spacer_" /></p>
<p>This initial reaction to the value presentation is the &#8220;First Impression&#8221; Phase of the value presentation, which is discussed in greater detail in the next article in the series.</p>
<p>If, at any point, you determine that continuing to give attention to the value presentation isn&#8217;t worth the time and energy required to do so, you direct your attention elsewhere and you close the folder and refile it.  This is the act of saying &#8220;no&#8221; to a transaction.  It might be no for now or no never, but for whatever reason, you decide you are not going to complete the transaction.  We will delve more deeply into what happens when you refile the corresponding folder, but for now, simply understand that the moment you say &#8220;no,&#8221; the value presentation is over.</p>
<p>A complete and successful value presentation consists of a few vital constituents:</p>
<p><strong>1.  Perceived Benefit Surplus </strong>(at which your perceived benefit exceeds your perceived cost)</p>
<p><strong>2.  Commitment </strong>(at which you decide to commit to the transaction)</p>
<p><strong>3.  Transaction </strong>(at which you consummate the commitment by giving the cost and receiving the benefit or initiating the contract committing both/all parties to do so)</p>
<div>
<dl id="attachment_460" style="width: 686px;">
<dt><img title="benefit-deficit-surplus-commitment-transaction" src="http://classyllama.com/wp-content/uploads/2010/03/Deficit_Surplus.jpg" alt="You must have a perceived benefit surplus to get the nod from customers." width="676" height="317" /></dt>
<dd>You must have a perceived benefit surplus to get the nod from customers.</dd>
</dl>
</div>
<p>Calls to action (CTAs) will not succeed if the Point of Perceived Benefit Surplus has been reached.  Naturally, visitors will reach that point at different times and for different reasons, which is why it&#8217;s typically an effective strategy to give visitors the opportunity to purchase at all times.  You never know when they&#8217;ll be ready to bite&#8230; I mean, buy.  However, excessive and glaring CTAs can have a negative effect on a visitor&#8217;s perceived benefit as they begin to get the feeling that you&#8217;re just trying to sell them on something rather than genuinely build value into their life.</p>
<p>It&#8217;s also important to note here that the point at which a visitor makes a commitment to the transaction is not the same point at which they complete the transaction.  The time between the commitment and the transaction should be as short and simple as possible.  The more complex and time-consuming it is, the more chance the frustration  of the transaction process or the &#8220;cold feet&#8221; effect could keep it from happening.  Consider how many wedding engagements do not result in the &#8220;sealed deal&#8221; of an actual marriage.  Have you ever heard of a wedding being called off because of how frustrating the wedding planning process was?  That&#8217;s precisely the same reason you should make it as easy and quick as possible to go from commitment to transaction.  (by the way, I&#8217;m not promoting the idea that you should get married the day after you&#8217;re engaged to make sure the marriage actually happens&#8230; if you&#8217;re that uncertain about your future spouse&#8217;s commitment, maybe it&#8217;s time to slow down and consider NOT sealing the deal.  <img src='http://classyllama.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   )</p>
<p><br class="spacer_" /></p>
<div>
<dl id="attachment_459" style="width: 661px;">
<dt><img title="evaluation-phases" src="http://classyllama.com/wp-content/uploads/2010/03/Phases.jpg" alt="The evaluation process doesn't stop once a purchase is made" width="651" height="402" /></dt>
<dd>The evaluation process doesn&#8217;t stop once a purchase is made</dd>
</dl>
</div>
<p><br class="spacer_" /></p>
<p>It&#8217;s very important to realize that people continue to evaluate the object even after the commitment and transaction.  Most people consider their business a success if they can get people to pay them money for whatever it is they sell.  I think that&#8217;s near-sighted.  Businesses that are built to last give as much attention to the post-transaction evaluation process as they do to the pre-transaction evaluation process.  If you&#8217;re just trying to get people to buy your stuff, you&#8217;re a con artist.  It&#8217;s not about building value into their lives.  It&#8217;s about making money&#8230;  Had a bit of a soap box moment there.</p>
<p>But even from a purely sustainable basis, you have to think about how your customers/clients will evaluate your offering once they are experiencing it, and even as they reflect on the experience.</p>
<p>Consider the purchase of a candy bar.  You are waiting in line at the grocery store.  It&#8217;s late.  You haven&#8217;t cooked dinner yet, and you&#8217;re hungry.  You see that familiar brown-packaged candy bar with the blue letters and the white secondary color, and you hear those familiar words &#8220;Hungry?  Why wait&#8230;&#8221;  And you grab the candy bar as your perceived benefit rises far above the perceived cost of the nutty, nougatty, caramelly deliciousness.  You begin to get impatient because all you want to do is tear off the glossy covering and devour the bar in four equal bites, but your social cost of embarrassment rises above the perceived value of eating first, paying later, so you do not take that action.  The line is horrendously long, and as you wait interminably, a new thought suddenly comes to your mind&#8230;  All those calories will go right to your butt.  You know this.  Past consumptions of equal quality and deliciousness have proven it.  Your brain begins to open up all of the corresponding stigmas associated with gaining weight, and as your mind descends into the depths of the health and social repercussions of partaking in the excellence in your sweating hand, you quickly close that mind folder and tightly squeeze the snack to ensure it cannot escape.  This action causes the exterior chocolate covering of the bar to cave in.  You&#8217;ve damaged the candy bar.  Now it&#8217;s official.  You absolutely cannot put it back now.  Your moral fiber rears its head at the thought of switching to an uncrumpled version.  The moral cost of such a heinous act is far greater than the 50 cents required to buy it.  Your appetite laughs to itself as it has successfully used your moral compass for its own devices&#8230;</p>
<p>Have I said enough?  I hope you can see how complex a seemingly simple evaluation process can be.  And you haven&#8217;t even purchased the candy bar yet!  What would happen if you got to the checkout lady, and she made a comment about how obese you are and how the candy bar &#8220;aint going to help that situation?&#8221;  Or after the transaction, what would happen if you bit into the candy bar and discovered a grub worm inside?  Your actions and perceptions about that candy bar would likely change significantly.</p>
<p>The more you can accurately analyze that process, the better you will be at presenting and delivering value to your customers or clients.  As this series progresses, we will break down and analyze each phase of the evaluation process.</p>
<p>Feel free to ask questions and make comments in the comment section.  I am very actively involved with comments for these articles, so I will respond!</p>
<p><img src="file:///C:/Documents%20and%20Settings/Kurt%20Theobald/Desktop/Phase-Impression2.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/magento/the-evaluation-process-an-introduction-to-the-perceived-cost-benefit-relationship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Editing Magento&#8217;s Footer Links</title>
		<link>http://classyllama.com/development/magento-development/editing-magentos-footer-links/</link>
		<comments>http://classyllama.com/development/magento-development/editing-magentos-footer-links/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 20:07:17 +0000</pubDate>
		<dc:creator>kkirchner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=426</guid>
		<description><![CDATA[To follow up on our post about editing Magento&#8217;s top links, I thought I might as well write an article about editing the footer links while I&#8217;m at it.  I&#8217;d recommend reading our post about using a local.xml file before getting started on this post.  This post might not make much sense until you read [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/editing-magentos-footer-links/" title="Editing Magento's Footer Links"><img src="http://classyllama.com/wp-content/uploads/2010/03/BottomLinks2.jpg" alt="Editing Footer Links" class="feed-image" /></a><p>To follow up on <a title="Editing Magento's Top Links" href="http://classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way/">our post about editing Magento&#8217;s top links</a>, I thought I might as well write an article about editing the footer links while I&#8217;m at it.  I&#8217;d recommend reading <a title="The Better Way to Modify Magento" href="http://classyllama.com/development/magento-development/the-better-way-to-modify-magento-layout/" target="_blank">our post about using a local.xml file</a> before getting started on this post.  This post might not make much sense until you read it.<em> [NOTE: This specific example assumes you are using the blank theme. Layout handles may differ from theme to theme.]</em></p>
<p><strong>In local.xml:</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p426code14'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p42614"><td class="code" id="p426code14"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;layout</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;0.1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;default<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;footer_links&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #808080; font-style: italic;">&lt;!-- Add custom links. Pretty self-explanatory.</span>
<span style="color: #808080; font-style: italic;">            Dig into app/code/core/Mage/Page/Block/Template/Links.php for more info --&gt;</span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;addLink&quot;</span> <span style="color: #000066;">translate</span>=<span style="color: #ff0000;">&quot;label title&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;label<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>About Us<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/label<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>about<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>  <span style="color: #808080; font-style: italic;">&lt;!-- can use a full url if not using urlParams below --&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>About Us<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;prepare<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/prepare<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> <span style="color: #808080; font-style: italic;">&lt;!-- set true if adding base url param --&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;urlParams</span> <span style="color: #000066;">helper</span>=<span style="color: #ff0000;">&quot;core/url/getHomeUrl&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span> <span style="color: #808080; font-style: italic;">&lt;!-- base url - thanks @Russ! --&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;position<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/position<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;liParams</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;aParams<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>'class=&quot;top-link-about-us&quot;'<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/aParams<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beforeText<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/beforeText<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;afterText<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/afterText<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #808080; font-style: italic;">&lt;!-- Remove 'Site Map' Link - Default Position: 10</span>
<span style="color: #808080; font-style: italic;">            Original link adding in catalog.xml --&gt;</span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;removeLinkByUrl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;url</span> <span style="color: #000066;">helper</span>=<span style="color: #ff0000;">&quot;catalog/map/getCategoryUrl&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #808080; font-style: italic;">&lt;!-- Remove 'Search Terms' Link - Default Position: 20</span>
<span style="color: #808080; font-style: italic;">            Original link adding in catalogsearch.xml--&gt;</span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;removeLinkByUrl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;url</span> <span style="color: #000066;">helper</span>=<span style="color: #ff0000;">&quot;catalogsearch/getSearchTermUrl&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #808080; font-style: italic;">&lt;!-- Remove 'Advanced Search' - Default Position: 30</span>
<span style="color: #808080; font-style: italic;">            Original link adding in catalogsearch.xml--&gt;</span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;removeLinkByUrl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;url</span> <span style="color: #000066;">helper</span>=<span style="color: #ff0000;">&quot;catalogsearch/getAdvancedSearchUrl&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #808080; font-style: italic;">&lt;!-- Remove 'Contact Us' link - Original link in contacts.xml</span>
<span style="color: #808080; font-style: italic;">            &lt;!-- Best bet to go to Magento's Admin &gt; System &gt; Configuration &gt; (left sidebar) Contacts</span>
<span style="color: #808080; font-style: italic;">            &gt; Contact Us Enabled = NO --&gt;</span>
            <span style="color: #808080; font-style: italic;">&lt;!-- You can pass the full url, which is a hassle if you have dev and stage sites --&gt;</span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;removeLinkByUrl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://YOUR_SITE.com/contacts/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #808080; font-style: italic;">&lt;!-- see comments below for making a custom helper to remove contacts link</span>
<span style="color: #808080; font-style: italic;">            no matter what your base url is  --&gt;</span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
        <span style="color: #808080; font-style: italic;">&lt;!-- By default, Magento sets a static footer block. Find it in the admin under</span>
<span style="color: #808080; font-style: italic;">        CMS &gt; Static Blocks.</span>
<span style="color: #808080; font-style: italic;">	&lt;reference name=&quot;footer&quot;&gt;</span>
<span style="color: #808080; font-style: italic;">            &lt;!-- Remove Magento's default static block and use the 'addLink' method above</span>
<span style="color: #808080; font-style: italic;">            to add your custom and inline links.  I use the 'unsetChild' method as often as</span>
<span style="color: #808080; font-style: italic;">            possible as opposed using the more final &lt;remove name=&quot;cms_footer_links&quot;/&gt;</span>
<span style="color: #808080; font-style: italic;">            just in case I want to add the block somewhere else --&gt;</span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;unsetChild&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>cms_footer_links<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #808080; font-style: italic;">&lt;!-- Remove all the other Magento links - &quot;Site Map, Search Terms, Advanced Search, and</span>
<span style="color: #808080; font-style: italic;">            Contact Us&quot; --&gt;</span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;unsetChild&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>footer_links<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> <span style="color: #808080; font-style: italic;">&lt;!-- Magento 1.4.x --&gt;</span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/default<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/layout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>If all else fails, you can edit template/page/template/links.phtml. However, if you can make all your changes in local.xml, your life will be so much easier when it comes to upgrading Magento and making future edits.</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/editing-magentos-footer-links/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Editing Magento&#8217;s Top Links (The Better Way)</title>
		<link>http://classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way/</link>
		<comments>http://classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 20:23:04 +0000</pubDate>
		<dc:creator>kkirchner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=328</guid>
		<description><![CDATA[You might need to read the post about using a local.xml file before this post makes much sense.
We offer all our clients a completely customized design from scratch, which means changing anything &#8211; including those annoying defaulted top links.  This post will show you how to edit your top links (without editing core layout files [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way/" title="Editing Magento's Top Links (The Better Way)"><img src="http://classyllama.com/wp-content/uploads/2010/02/TopLinks2.jpg" alt="" class="feed-image" /></a><p>You might need to read the <a href="http://classyllama.com/development/magento-development/the-better-way-to-modify-magento-layout/" target="_blank">post about using a local.xml file</a> before this post makes much sense.</p>
<p>We offer all our clients a completely customized design from scratch, which means changing anything &#8211; including those annoying defaulted top links.  This post will show you how to edit your top links (without editing core layout files which may change when you update Magento) by utilizing a <a href="http://classyllama.com/development/magento-development/the-better-way-to-modify-magento-layout/" target="_blank">local.xml file</a>. You can even add your own custom links without touching any template files! <em>[NOTE: This specific example assumes you are using the <a href="http://www.magentocommerce.com/extension/reviews/module/518" target="_blank">blank theme</a>. Layout handles may differ from theme to theme.]</em></p>
<p><em>ADDITION: Check out the blog post about <a href="http://classyllama.com/development/magento-development/editing-magentos-footer-links/" target="_blank">editing Magento&#8217;s footer links</a></em></p>
<p><b>In local.xml:</b></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p328code16'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p32816"><td class="code" id="p328code16"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;layout</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;0.1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;default<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;root&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;top.links&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #808080; font-style: italic;">&lt;!-- Add custom links. Pretty self-explanatory.</span>
<span style="color: #808080; font-style: italic;">                Dig into app/code/core/Mage/Page/Block/Template/Links.php for more info --&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;addLink&quot;</span> <span style="color: #000066;">translate</span>=<span style="color: #ff0000;">&quot;label title&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;label<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>About Us<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/label<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>about<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>  <span style="color: #808080; font-style: italic;">&lt;!-- can use full url also --&gt;</span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>About Us<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;prepare<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/prepare<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> <span style="color: #808080; font-style: italic;">&lt;!-- set true if adding base url param --&gt;</span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;urlParams</span> <span style="color: #000066;">helper</span>=<span style="color: #ff0000;">&quot;core/url/getHomeUrl&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span> <span style="color: #808080; font-style: italic;">&lt;!-- base url - thanks @Russ! --&gt;</span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;position<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/position<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;liParams</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;aParams<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>'class=&quot;top-link-about-us&quot;'<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/aParams<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beforeText<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/beforeText<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;afterText<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/afterText<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
                <span style="color: #808080; font-style: italic;">&lt;!-- Removes 'My Account' link - Default position: 10 --&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;removeLinkByUrl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;url</span> <span style="color: #000066;">helper</span>=<span style="color: #ff0000;">&quot;customer/getAccountUrl&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
                <span style="color: #808080; font-style: italic;">&lt;!-- Removes 'Wishlist' link - Default position: 20 --&gt;</span>
                <span style="color: #808080; font-style: italic;">&lt;!-- for Magento 1.3.x --&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;removeLinkByUrl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;url</span> <span style="color: #000066;">helper</span>=<span style="color: #ff0000;">&quot;wishlist/&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
                <span style="color: #808080; font-style: italic;">&lt;!-- for Magento 1.4.x --&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;wishlist_link&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
                <span style="color: #808080; font-style: italic;">&lt;!-- Removes 'My Cart' AND 'Checkout' links</span>
<span style="color: #808080; font-style: italic;">                Default position: 40 and 50 respectively --&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;checkout_cart_link&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
                <span style="color: #808080; font-style: italic;">&lt;!-- To re-add 'My Cart' or 'Checkout' after removing both --&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;block</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;checkout/links&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;checkout_cart_link_custom&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;addCartLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;addCheckoutLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/block<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/default<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;customer_logged_out<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #808080; font-style: italic;">&lt;!-- Removes 'Log In' link - Default position: 60 --&gt;</span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;top.links&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;removeLinkByUrl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;url</span> <span style="color: #000066;">helper</span>=<span style="color: #ff0000;">&quot;customer/getLoginUrl&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/customer_logged_out<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;customer_logged_in<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #808080; font-style: italic;">&lt;!-- Removes 'Log Out' link - Default position: 60 --&gt;</span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;top.links&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;removeLinkByUrl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;url</span> <span style="color: #000066;">helper</span>=<span style="color: #ff0000;">&quot;customer/getLogoutUrl&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/customer_logged_in<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/layout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>If you <em>absolutely</em> cannot find a way to customize your top links using these methods, you can edit the /template/page/template/links.phtml</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Optimizing Your E-Commerce Conversion Rate:  Analyzing and Improving Traffic Quality</title>
		<link>http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-analyzing-and-improving-traffic-quality/</link>
		<comments>http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-analyzing-and-improving-traffic-quality/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 17:39:17 +0000</pubDate>
		<dc:creator>ktheobald</dc:creator>
				<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[E-Commerce Optimization]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[conv]]></category>
		<category><![CDATA[traffic]]></category>
		<category><![CDATA[traffic quality]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=365</guid>
		<description><![CDATA[Variable #1:  Traffic Quality
 
If you sell pencil sharpeners, and most of your traffic is redirected from a Youtube video that shows a guy balancing a pencil sharpener on his nose, it&#8217;s not very likely that the visitors to your site are interested in purchasing pencil sharpeners.  Your bounce rate will likely be sky-high.  I [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-analyzing-and-improving-traffic-quality/" title="Optimizing Your E-Commerce Conversion Rate:  Analyzing and Improving Traffic Quality"><img src="http://classyllama.com/wp-content/uploads/2010/03/Phase-Impression26-680x80.jpg" alt="Perceived Cost/Benefit Chart:  First Impression Phase" class="feed-image" /></a><p><strong>Variable #1:  Traffic Quality<br />
 </strong></p>
<p>If you sell pencil sharpeners, and most of your traffic is redirected from a Youtube video that shows a guy balancing a pencil sharpener on his nose, it&#8217;s not very likely that the visitors to your site are interested in purchasing pencil sharpeners.  Your bounce rate will likely be sky-high.  I recently saw a massive increase in traffic to one of our client&#8217;s sites, increasing their monthly traffic volume by around 30%, but they only made one sale from all of the traffic.  It was a major design gallery hit that caused the traffic.  People were going to the site to look at the design, not buy stuff, so of course, the conversion rate for that traffic source was 0%.  In these cases, the traffic quality would greatly decrease the conversion outcome, despite the quality of your Value Presentation and the Ease of Purchase.  The Value Presentation and Ease of Purchase variables would have to pick up a lot of slack to absorb the poor traffic quality and generate conversions.</p>
<p>If, on the other hand, your traffic quality is very high, it can absorb weakness in your Value Presentation and Ease of Purchase.  Specialty stores are a great example of this.  They offer a very narrow product that you can only get from them.  Their site can have a really bad design and no marketing continuity or promotional sensitivity, and it can be really difficult to purchase the product, but they still convert visits to purchases because the traffic to their site is looking for what they&#8217;re offering.  This situation can be broken down via a few Value/Cost-based criteria:</p>
<p><br class="spacer_" /></p>
<p><strong>1.  Perceive they immediately need/want what you&#8217;re offering</strong></p>
<p>Many of the people who arrive on a specialty site will most likely perceive that they need/want what is offered.  Otherwise, they wouldn&#8217;t have ended up on the site.  They either searched for the specific specialty item on a search engine or were referred by a friend or other site that clearly defines the specialty.  Hopefully any traffic that arrives and immediately leaves wasn&#8217;t traffic that required resource allocation to generate.</p>
<p>If a visitor does not perceive that they need it immediately when they arrive on your site, you must either persuade them that they do need/want &#8220;it&#8221; immediately if you wish to convert the visit into a sale.  That may not be the right goal, though.  Oftentimes, the right goal is to build loyalty without asking for the &#8220;final&#8221; sale by asking for intermediate commitments, like signing up for a newsletter, following you on Twitter, ordering a catalog, or any other intermediate step that generates a larger degree of intimacy with that visitor.  How quickly you seek to convert a visitor to a purchase depends largely on the nature of your offer.  If you are selling novelty T-shirts, converting the sale on the first visit is likely the right pursuit.  If, however, you are selling vintage wine, it is likely not advisable to convert on the first visit.  Quality traffic flow analysis can bring clarity to this kind of question though.</p>
<p><strong>Key Point: </strong>Do not base your decisions on what seems reasonable or intuitive.  Look at the data and react to what is <em>actually </em>happening.</p>
<p><strong>Key Point: </strong> &#8220;What is my bounce rate?&#8221; is not the right question.  &#8220;What is the bounce rate of my quality traffic?&#8221; is the right question.  In other words, are the people you want to be on your site staying?  That&#8217;s all that matters.  Who cares about the designers who are just browsing for design inspiration.  If they bounce, it doesn&#8217;t matter.  Do you think we freaked out when the general bounce rate spiked after the major design gallery hit?  Of course not.  That is to be expected.  <strong>Asking the right questions is the fundamental key to conversion success </strong>(oh, and the key to success with everything else, too)<strong>.</strong></p>
<p><strong><br />
 </strong></p>
<p><strong>2.  Perceive it to be worth more than they perceive it costs them.</strong></p>
<p>There are two variables here:  <strong>Perceived Value and Perceived Cost</strong>.  To help the visitor to pass this Gauntlet milestone, you must affect one or both of these factors.  There is no other option.</p>
<p><em>Perceived Value</em></p>
<p>Value is a tricky thing.  No two people perceive the same thing as equally valuable.  In fact, I could wax philosophical here and pose the question, &#8220;Does true value even exist?&#8221; but I will refrain.  Whether or not there is a true value to anything, people perceive it differently.  Our team believes in trying to correctly assess the true value of what we offer and represent that value well.  That encourages our team to constantly improve the value of what we offer, which we appreciate.</p>
<p>There are two factors of perceived value:  <strong>Pre-Existing Evaluation and Interaction Effect</strong>.  The pre-existing evaluation is relevant to the Quality Traffic  variable; the interaction effect is relevant to the Value Presentation variable.</p>
<p>1.  <strong>Pre-Existing Evaluation </strong>is how the visitor evaluates the product or service prior to interacting with your marketing media.  Except in cases where the individual has never heard of your product or service, everyone will have a Pre-Existing Evaluation.  This is not something you can affect.  Ideally, you want to attract visitors who have a very high pre-existing evaluation of your product or service.  High pre-existing evaluation has a positive effect on Traffic Quality, but it&#8217;s not the only sub-variable of Traffic Quality.  Most people have a very high evaluation of a Lamborghini, but that doesn&#8217;t mean Lamborghini should try to attract &#8220;most people&#8221; to their show room.  We&#8217;ll discuss the other sub-variables shortly.</p>
<p>2.  <strong>Interaction Effect </strong>is the effect the interaction with your offering, specifically your e-commerce site in this case, has on your visitors pre-existing evaluation.  The only factor in the Interaction Effect that is relevant to Traffic Quality is how <strong>Impressionable </strong>the traffic is, which makes them more receptive to positively changing their evaluation of your product/service.  We will discuss the Interaction Effect in greater detail when we discuss the second variable, Value Presentation.</p>
<p><em>Perceived Cost</em></p>
<p>The first mistake people make when considering Cost is to assume that it&#8217;s simply the price.  It&#8217;s not.  First, the same price will be perceived differently in how costly it is depending on the perspective.  A multi-billionaire perceives a private jet to be a very low cost; a millionaire would perceive it to be extremely costly.  When thinking about Perceived Cost, think about it in terms of <strong>Perceived Sacrifice</strong>, as that is what the person <em>feels.</em><strong> </strong>How much a person feels they will experience sacrifice as a result of making a particular decision is a different way of saying Perceived Cost.</p>
<p>Many people perceive less sacrifice in purchasing a $3,000 ring for $100 per month for five years than paying $3,000 cash immediately, even though the first option is twice as costly in terms of cash than the second, and yet it is considered <em>less </em>costly.  Clearly, Perceived Cost and price are not interchangeable.</p>
<p>Money isn&#8217;t even the only factor that plays a part in Cost Perception.  Time, stress, focus, and forms of sacrifice are equally important to consider.  Convenience is becoming more important in the purchase of goods and services because a higher value is being placed on time, focus, and stress avoidance.  People value time more, so using less of it means they feel less sacrifice.  This is especially relevant to the third variable, so I will bite my tongue for the time being.</p>
<p>To conclude this section on Perceived Value and Cost, consider that in order to pass this Conversion Gauntlet obstacle, the visitor must perceive more value than cost in the acquisition of your good and/or service.  Consider all the factors that affect Perceived Value and Perceived Cost.  Most people just look at price.  Don&#8217;t be sucked into that ignorance.  It&#8217;s not about price.  <strong>It&#8217;s about Value and Sacrifice (Cost).</strong></p>
<p>There is tons more to say about the relationship between perceived value and cost.  I could literally write an entire book about it.  But I will be patient and elaborate on it later.</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><strong>3.  Be able to complete the transaction process without falling below the &#8220;Adequate Value Threshold.&#8221;</strong></p>
<p>The &#8220;Adequate Value Threshold&#8221; is that point at which the Perceived Value falls below the Perceived Cost or the Perceived Cost rises above the Perceived Value.  I will be writing a blog post on this idea alone as it is an essential piece of theory that every business person and marketer needs to be able to visualize graphically.</p>
<p>Two important questions relevant to Traffic Quality:</p>
<p><em>1.  Do they have the technical skill to complete the process?</em></p>
<p>Your visitors need to be able to use the internet and complete a transaction online in order to purchase from you.  If their technical skills are lacking or if your process is difficult, their attempts at completing the process may produce a great deal of stress or take a lot of time and focus, both of which increases their Perceived (and actual) Cost to complete the transaction.  This can push the Perceived Cost above their Value Threshold, which is the point at which a person says &#8220;No.&#8221;  Generally, the later this occurs during the interaction, the more likely it will cause the visitor to exit the interaction with a negative outcome.  Visitors don&#8217;t typically expect to see adequate value in a product or service early on in the interaction, but once they cross the value rises above the cost or the cost dips below the value, a cross back over typically greatly reduces the likelihood of a positive outcome.</p>
<p><em>2.  Do they perceive significant risk in giving their credit card and other personal information to a business online?</em></p>
<p>Security is so important to people because it represents the absence of risk.  Risk is a sacrifice, and therefore a cost.  Reduce risk and you reduce the cost to the visitor.  The less your traffic consider it risky to give personal information, the higher quality traffic it is as it relates to conversion rate specifically because fewer visitors will abandon the process due to the perceived cost of insecurity/risk.</p>
<p><br class="spacer_" /></p>
<p><strong>4.  Have the resources to absorb the cost right now.</strong></p>
<p>I clearly have chosen specific verbiage here to represent a more accurate truth.  I could have just said, &#8220;They gotta have enough money to pay the price,&#8221; but, to belabor the point, it&#8217;s not just about money.  Do they have the time, money, and emotional and mental strength to absorb the costs of time, money, stress, and focus that is required to complete the purchase?</p>
<p>Convenience has become a major factor more recently because people are tending to value their time more.  Consider what your target audience values (make a list!) and be sensitive to those values.  If you can&#8217;t connect with what your audience values most, how in the world are you going to communicate any value to them?</p>
<p><strong>Conclusion:</strong></p>
<p>Traffic Quality is the nature and condition of people when they arrive on your site.  There are a vast array of preset values that will affect how they respond to your Value Presentation.  Your Value Presentation is not right for everyone.  In fact, it&#8217;s probably not right for the grand majority of the market.  Make sure you&#8217;re attracting the right Traffic for your Value Presentation.  Sometimes, though, it&#8217;s easier to change your Value Presentation to conform to the Traffic Quality you have.  In the next section, I will discuss how Your Value Presentation can affect the two criteria for conversion and what factors you need to consider in optimizing it to better deliver value to your Traffic.</p>
<p><br class="spacer_" /></p>
<p>Coming Soon&#8230;  Article #3 in the Revenue Optimization Series:  <strong>Value Presentation</strong>.  I don&#8217;t know about you, but I feel like I&#8217;m in marketing heaven already.</p>
<p><strong><br />
 </strong></p>
<p><strong>Appendix A</strong></p>
<p><strong>Wrong Question #1:  What is a good conversion rate?</strong></p>
<p>There is no global &#8220;good&#8221; conversion rate.  It really depends on your particular circumstances.  Consider this.  If you have a product that requires a large amount of consideration and research before a purchase decision is made, you may have visitors that visit your site 20 times before purchasing.  Since conversion rate is calculated by purchase orders divided by total number of visits<strong> (# of Orders / # of Visits = Conversion Rate)</strong>, your maximum conversion rate is only 5%.  So if half of the unique visitors that are coming to your site end up purchasing, you are achieving a 2.5% conversion rate.  This is over-simplification, but you get the picture.  Determine your target conversion rate based on your offering and your audience.  Don&#8217;t listen to gurus who herald their ability to produce xx% conversion rates and that you should be generating that conversion rate as well.  If their traffic is exclusively club members and their product is mandatory membership cards, their claims becomes less impressive.  In fact, aiming too high on your conversion rate can generate bad decisions.  By trying to get your visitors to push the button too quickly, you may miss out on opportunities to cross-sell or up-sell and you very likely will get to a point when you stop serving their best interests (and that&#8217;s what you want most, right?).  If you need help, find a consultant that wants to know your business before telling you what your target conversion rate should be.  That&#8217;s a good sign they&#8217;ll be helpful.</p>
<p><br class="spacer_" /></p>
<p>Next article:  Value Presentation (will link to as soon as the article is finished)</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-analyzing-and-improving-traffic-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimizing Your E-Commerce Conversion Rate:  The Two Conversion Criteria</title>
		<link>http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-the-two-conversion-criteria/</link>
		<comments>http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-the-two-conversion-criteria/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 17:26:33 +0000</pubDate>
		<dc:creator>ktheobald</dc:creator>
				<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[E-Commerce Optimization]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[conversion rate optimization]]></category>
		<category><![CDATA[revenue optimization]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=319</guid>
		<description><![CDATA[E-commerce traffic is worthless if you are not converting any of your traffic into sales.  The percentage of visits that result in a purchase is called the conversion rate.  So much emphasis is put on generating traffic, but it&#8217;s only the first step in building e-commerce revenue and profitability.  It is typically very expensive from [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-the-two-conversion-criteria/" title="Optimizing Your E-Commerce Conversion Rate:  The Two Conversion Criteria"><img src="http://classyllama.com/wp-content/uploads/2010/03/Phase-Impression26-680x80.jpg" alt="Perceived Cost/Benefit Chart:  First Impression Phase" class="feed-image" /></a><p>E-commerce traffic is worthless if you are not converting any of your traffic into sales.  The percentage of visits that result in a purchase is called the conversion rate.  So much emphasis is put on generating traffic, but it&#8217;s only the first step in building e-commerce revenue and profitability.  It is typically very expensive from a holistic resource perspective (money, time, focus, etc.) to generate traffic, so to pay no attention to conversion rate is committing a cardinal e-commerce sin.  There are a few critical components that determine how high your conversion rate will be.</p>
<p><br class="spacer_" /></p>
<p>Step back for a moment.  What would it take to produce a 100% conversion rate?  Every single time someone visited your site, they would purchase something.  Any time a visitor meets two criteria, they make a purchase.  There are many factors that affect each of these criteria, and I will analyze each of them in this article and following articles.</p>
<p><strong>THE TWO CONVERSION CRITERIA<br />
 </strong></p>
<p>(Here it is.  The secret recipe for converting visits to sales.)</p>
<p><strong>To convert a visit into a purchase, the visitor must:</strong></p>
<p><strong>1.  Perceive the value of what you offer is higher than the value of the cost to acquire it.<br />
 </strong></p>
<p><strong>2.  Have the resources to absorb the cost at the point of purchase.</strong></p>
<p><br class="spacer_" /></p>
<p>I will analyze these Conversion Criteria from the perspective of a different set of variables.  While it isn&#8217;t a quantitative measurement, you can determine the likelihood that an individual will make a purchase via a cubic equation:  <strong>Traffic Quality x Value Presentation x Ease of Purchase</strong>.  If you have a very high value for any of these variables, it doesn&#8217;t necessarily mean you will have a high conversion rate.  Just as with the broader e-commerce revenue equation I covered in the first post of this series (Traffic x Conversion Rate x Average Order Size = Revenue), attention must be given to each of the variables to optimize the outcome.  If any one of them is shirked, it can ruin all of the efforts made to improve the other two.  While you cannot attach a numeric value to these variables as easily as you can to the Revenue variables, it&#8217;s still important to understand conceptually because the conversion variables relate in the same way as the revenue variables.</p>
<p><br class="spacer_" /></p>
<p>In the next article, I will dig into the first variable that affects conversion rate:  <a title="Improving Traffic Quality" href="http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-analyzing-and-improving-traffic-quality/"><strong>Traffic Quality</strong></a>.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1230px; width: 1px; height: 1px;"><strong>1.  Perceive they need/want what you&#8217;re offering right now</strong></div>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-the-two-conversion-criteria/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Better Way to Modify Magento Layouts</title>
		<link>http://classyllama.com/development/magento-development/the-better-way-to-modify-magento-layout/</link>
		<comments>http://classyllama.com/development/magento-development/the-better-way-to-modify-magento-layout/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 14:10:45 +0000</pubDate>
		<dc:creator>ehansen</dc:creator>
				<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=353</guid>
		<description><![CDATA[In this article, I&#8217;m going to be covering what I believe to be a very effective way of modifying the layout of any Magento theme.  
For several of the first Magento themes I built, I copied the layout files from the default or blank theme into the custom theme layout folder.  I would [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/the-better-way-to-modify-magento-layout/" title="The Better Way to Modify Magento Layouts"><img src="http://classyllama.com/wp-content/uploads/2010/02/Screen-shot-2010-02-23-at-8.11.32-AM.png" alt="" class="feed-image" /></a><p>In this article, I&#8217;m going to be covering what I believe to be a very effective way of modifying the layout of any Magento theme.  </p>
<p>For several of the first Magento themes I built, I copied the layout files from the default or blank theme into the custom theme layout folder.  I would then modify the layout files directly, editing or commenting out content in files like: catalog.xml, page.xml, checkout.xml, etc&#8230;  I never liked editing these files directly, as I knew that when it came time to upgrade to a newer version of Magento that had upgraded the layout files, I&#8217;d have to merge the changes into the new layout files.  </p>
<p>One day, I was digging through the Magento code relating to layout files and discovered a bit of code that made me realize that it was possible to just place a local.xml file in my custom theme&#8217;s layout folder and have it loaded automatically by Magento.  (this code is on line 283 in /app/code/core/Mage/Core/Model/Layout/Update.php in the fetchFileLayoutUpdates() method).  </p>
<p>Due to Magento&#8217;s brilliant <reference> tags, it&#8217;s possible to do just about anything you want without having to edit any of the default layout files. </p>
<p>Before delving into the code, let&#8217;s look at the advantages/disadvantages of this method:</p>
<h3>Advantages</h3>
<ul>
<li>Allows you to upgrade themes without having to merge in changes</li>
<li>All custom layout changes are centralized, allowing developers to more easily make changes to custom theme elements</li>
</ul>
<h3>Disadvantages</h3>
<ul>
<li>At first, it&#8217;s slower to use this method than hacking up the standard layout files directly</li>
<li>You will have one more place to look where the site might be pulling code (template phtmls, standard layout files, admin layout updates, AND local.xml)</li>
</ul>
<p>Here is the slimmed down, commented local.xml from one of our recent projects:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p353code18'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p35318"><td class="code" id="p353code18"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;layout</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;0.1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;default<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;head&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #808080; font-style: italic;">&lt;!-- Magento looks in /skin/frontend/&lt;INTERFACE&gt;/&lt;THEME&gt;/js/buyprinting.js</span>
<span style="color: #808080; font-style: italic;">		for this file --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;addItem&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>skin_js<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/type<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>js/buyprinting.js<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
		<span style="color: #808080; font-style: italic;">&lt;!-- This removes the item that was set in the page.xml file --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;removeItem&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>skin_js<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/type<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>js/iehover-fix.js<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
		<span style="color: #808080; font-style: italic;">&lt;!-- Magento looks in /js/prototype/element.storage.js for this file --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;addJs&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>prototype/element.storage.js<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;addCss&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;stylesheet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>css/buyprinting.css<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/stylesheet<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;header&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #808080; font-style: italic;">&lt;!-- This adds a CMS block that can be called from the template file</span>
<span style="color: #808080; font-style: italic;">        associated with the header block. --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;block</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;cms/block&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;cms_quick_help&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;setBlockId&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;block_id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>quick_help<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/block_id<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/block<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
        <span style="color: #808080; font-style: italic;">&lt;!-- The remove tag removes the blocks with the specified name from the layout --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;top.menu&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;store_language&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;breadcrumbs&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;top.nav&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;catalog.topnav&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;left&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;left.newsletter&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;left.permanent.callout&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;catalogsearch.leftnav&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
        <span style="color: #808080; font-style: italic;">&lt;!-- When you use the remove tag, it removes any blocks with the specified name from</span>
<span style="color: #808080; font-style: italic;">            the entire layout, regardless of the context. So, if I remove right.newsletter in</span>
<span style="color: #808080; font-style: italic;">            the &lt;default&gt; context and that name is used in say the &lt;catalog_product_view&gt; context,</span>
<span style="color: #808080; font-style: italic;">            then both blocks will be removed.  Because remove operates on the global context,</span>
<span style="color: #808080; font-style: italic;">            you can only remove an element once.  Since &lt;remove name=&quot;right.newsletter&quot; /&gt; is</span>
<span style="color: #808080; font-style: italic;">            being called in catalogsearch.xml, we have to unset it, or else we'll get an error.</span>
&nbsp;
<span style="color: #808080; font-style: italic;">            The line below only unsets the block from the parent's context, not the global</span>
<span style="color: #808080; font-style: italic;">            layout context --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;unsetChild&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>right.newsletter<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;right&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #808080; font-style: italic;">&lt;!-- Some blocks have to be removed using remove, others via unsetChild.</span>
<span style="color: #808080; font-style: italic;">            I've not spent the time digging into the code to figure out why --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;right.permanent.callout&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;catalog.compare.sidebar&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;left.reports.product.viewed&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;unsetChild&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>sale.reorder.sidebar<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;unsetChild&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>wishlist_sidebar<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;unsetChild&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>right.reports.product.viewed<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;cart_sidebar&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/default<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #808080; font-style: italic;">&lt;!-- CATALOG PAGES --&gt;</span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;catalog_product_view<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><span style="color: #808080; font-style: italic;">&lt;!-- 2columns-right --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;root&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;setTemplate&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;template<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>page/2columns-left.phtml<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/template<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;content&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;product.info&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;block</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;cms/block&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;cms_product_info_tabs&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;setBlockId&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;block_id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>product_info_tabs<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/block_id<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/block<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;block</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;catalog/product_view&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;product.clone_prices&quot;</span> <span style="color: #000066;">as</span>=<span style="color: #ff0000;">&quot;prices&quot;</span> <span style="color: #000066;">template</span>=<span style="color: #ff0000;">&quot;catalog/product/view/price_clone.phtml&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;unsetChild&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>tierprices<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;unsetChild&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>addto<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;addto&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reference</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;product.info.options.wrapper.bottom&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;unsetChild&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>product.tierprices<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reference<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/catalog_product_view<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/layout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>I hope with article has given you some direction as to how you can improve you Magento theming skills.  If you have any additional tips/comments on coding layouts, please suggest them in the comments section.</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/the-better-way-to-modify-magento-layout/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>The Smart Method of Loading Collections</title>
		<link>http://classyllama.com/development/magento-development/the-smart-method-of-loading-collections/</link>
		<comments>http://classyllama.com/development/magento-development/the-smart-method-of-loading-collections/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 20:15:00 +0000</pubDate>
		<dc:creator>ehansen</dc:creator>
				<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=315</guid>
		<description><![CDATA[One fairly unknown feature of Magento collections is that you actually don&#8217;t have to call ->load() on a collection before being able to access the items in the collection.  So you can do this:

?View Code PHP$orders = Mage::getResourceModel&#40;'sales/order_collection'&#41;-&#62;addAttributeToSelect&#40;'*'&#41;;
# The load method is not necessary, as iterating through a collection automatically loads it, if it [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/the-smart-method-of-loading-collections/" title="The Smart Method of Loading Collections"><img src="http://classyllama.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-2.23.33-PM.png" alt="" class="feed-image" /></a><p>One fairly unknown feature of Magento collections is that you actually don&#8217;t have to call ->load() on a collection before being able to access the items in the collection.  So you can do this:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p315code21'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p31521"><td class="code" id="p315code21"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$orders</span> <span style="color: #339933;">=</span> Mage<span style="color: #339933;">::</span><span style="color: #004000;">getResourceModel</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sales/order_collection'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addAttributeToSelect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'*'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># The load method is not necessary, as iterating through a collection automatically loads it, if it hasn't already been loaded.
</span><span style="color: #666666; font-style: italic;"># $orders-&gt;load();
</span><span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$orders</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$order</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Order Id: '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$order</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>The base Varien_Data_Collection class implements the IteratorAggregate (http://php.net/manual/en/class.iteratoraggregate.php) interface which extends the Traversable (http://www.php.net/manual/en/class.traversable.php) interface.  When a class extends the Traversable interface, it guarantees that that class can be iterated through using foreach().  When foreach is called on a collection, it calls the getIterator() method in the Varien_Data_Collection class and uses the value returned from that method as the value that the foreach iterates through.  This is the getIterator() method:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p315code22'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p31522"><td class="code" id="p315code22"><pre class="php" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getIterator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayIterator<span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_items<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>This auto-loading functionality works for both EAV and flat-table collections.</p>
<p>As you can see, a collection ensures that it is loaded before running through a foreach loop. Note: collections can only be loaded once per instantiation.  If you want to reload a collection, you have to call the clear() method, and then reset the select and filters before calling the load() method again.</p>
<p>Knowing that collections function in this way allows you to write code without explicit calls to load().  This ultimately should result in more flexible code.  You can have a method in a block that loads a collection.  That collection can then either be called by a template file and iterated through, or you can have another method that loads the collection from the first method, and then adds additional selects/filters to it.  This practice of not explicitly calling the load() results in more flexible and reusable code.</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/the-smart-method-of-loading-collections/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saving the Value of a Specific Attribute from a Model</title>
		<link>http://classyllama.com/development/magento-development/saving-the-value-of-a-specific-attribute-from-a-model/</link>
		<comments>http://classyllama.com/development/magento-development/saving-the-value-of-a-specific-attribute-from-a-model/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 16:46:29 +0000</pubDate>
		<dc:creator>ehansen</dc:creator>
				<category><![CDATA[Magento Development]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=303</guid>
		<description><![CDATA[How to save the value of a specific attribute of an EAV model.]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/magento-development/saving-the-value-of-a-specific-attribute-from-a-model/" title="Saving the Value of a Specific Attribute from a Model"><img src="http://classyllama.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-10.47.12-AM.png" alt="" class="feed-image" /></a><p>In Magento, it&#8217;s very easy to save all the data in a model by running $model->save();. (Note: In this blog post, model refers to an EAV model, not a flat resource model)  This saves all the attributes for the model to their respective attribute tables.  There are times when saving the value of just one of the model attributes is desirable.  A couple cases where you&#8217;d want to do this:</p>
<ul>
<li>You&#8217;ve been passed a model from an event, and you aren&#8217;t sure if the data in that model can be safely saved.</li>
<li>You are saving many models and want to make your save operations as efficient as possible</li>
</ul>
<p>Here is how you&#8217;d save just one attribute of a product model:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p303code23'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p30323"><td class="code" id="p303code23"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$product</span> <span style="color: #339933;">=</span> Mage<span style="color: #339933;">::</span><span style="color: #004000;">getModel</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'catalog/product'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Some Random Name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getResource</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">saveAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$product</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/magento-development/saving-the-value-of-a-specific-attribute-from-a-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Single vs. Double Quotes</title>
		<link>http://classyllama.com/development/php/php-single-vs-double-quotes/</link>
		<comments>http://classyllama.com/development/php/php-single-vs-double-quotes/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 06:21:40 +0000</pubDate>
		<dc:creator>ehansen</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=294</guid>
		<description><![CDATA[For a long time, I've been a proponent of using single-quotes as opposed to double-quotes when assigning string literals (strings containing no variables) to a variable (eg:  $var = 'string'; VS $var = "string").]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/development/php/php-single-vs-double-quotes/" title="PHP Single vs. Double Quotes"><img src="http://classyllama.com/wp-content/uploads/2010/02/Screen-shot-2010-02-07-at-12.19.18-AM1-718x80.png" alt="" class="feed-image" /></a><p>For a long time, I&#8217;ve been a proponent of using single-quotes as opposed to double-quotes when assigning string literals (strings containing no variables) to a variable (eg:  $var = &#8217;string&#8217;; VS $var = &#8220;string&#8221;).</p>
<p>I just did some research to find out how much (if any) impact using single-vs-double quotes had on performance.  I took the code from this blog post: http://spindrop.us/2007/03/03/php-double-versus-single-quotes/ modified the MAX constant to 8,000,000 and then ran the test on our Nexcess server.  The results were fairly consistent:</p>
<p>Time 1: 5.9485120773315 ($c = &#8220;test &#8221; . $i;  )<br />
Time 2: 7.0326972007751 ($c = &#8220;test $i&#8221;;  )<br />
Time 3: 5.9164550304413  ($c = &#8216;test &#8216; . $i;  )</p>
<p>It&#8217;s clear that embedding variables in strings is less efficient, but the difference between normal single-vs-double quotes is negligible (at least on our server configuration with this test).</p>
<p>Despite the lack of clear performance benefits, I still think it best practice to use single-quotes when using string literals, as it denotes that a string doesn&#8217;t contain any variables.  One benefit of this is that when skimming code, you can more quickly process which variables are string literals vs strings with embedded variables.</p>
<p>The Zend Framework Coding Standard also recommends this practice: http://framework.zend.com/manual/en/coding-standard.coding-style.html</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/development/php/php-single-vs-double-quotes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Three Keys to Optimizing E-Commerce Revenue</title>
		<link>http://classyllama.com/magento/the-three-keys-to-optimizing-e-commerce-revenue/</link>
		<comments>http://classyllama.com/magento/the-three-keys-to-optimizing-e-commerce-revenue/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 21:55:46 +0000</pubDate>
		<dc:creator>ktheobald</dc:creator>
				<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[E-Commerce Optimization]]></category>
		<category><![CDATA[General Business]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[revenue]]></category>
		<category><![CDATA[traffic]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=248</guid>
		<description><![CDATA[Introduction
No matter what you sell online, there are three core constituents to revenue:  Traffic, Conversion Rate, and Average Order Size.  In fact, it&#8217;s a cubic equation: Revenue = Traffic (#) x Conversion (%) x Average Order Size ($).  So if you generate 21,000 visits in a month with a conversion rate of 3.00% and an [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>No matter what you sell online, there are three core constituents to revenue:  <strong>Traffic, Conversion Rate, and Average Order Size</strong>.  In fact, it&#8217;s a cubic equation: Revenue = Traffic (<strong>#</strong>) x Conversion (<strong>%</strong>) x Average Order Size (<strong>$</strong>).  So if you generate 21,000 visits in a month with a conversion rate of 3.00% and an average order size of $156.23, your revenue is $98,424.90 (21,000 x 3.00% x $156.23).</p>
<p>If you can analyze each of these variables effectively, the e-commerce world is your banana.  I hope that by the end of this article series, you&#8217;ll understand the &#8220;sub-variables&#8221; that affect each of these core revenue variables, equipping you with the tools to optimize your e-commerce revenue.  (btw, many of these principles apply to business in general, not just e-commerce)</p>
<p><strong>This first article will relate to generating Traffic </strong>and the variables that affect it.</p>
<p><br class="spacer_" /></p>
<p><strong>Keys to Traffic</strong></p>
<p>Traffic is calculated according to the following equation:  <strong>Unique Visitors x Average Visit Frequency</strong></p>
<p>Keys to unique visitor traffic are <strong>Medium</strong> (where they found your site) and <strong>Presentation</strong> (what they experienced through the medium/media that made them visit).  The key to repeat traffic is the <strong>Visit Experience</strong> (their evaluation of their visit retrospectively).  Every single person that visits your site has a corresponding medium and presentation history, and if they visit the site more than once, they have an experience history as well.</p>
<p><strong><em>Medium</em></strong></p>
<p>The primary factors of a medium are relevance and accessibility.</p>
<p>The key relevance question:  Is the medium used connecting with the kind of people that will see value in what you offer and need it now or at some point in the future, preferably in the near future?</p>
<p>The key accessibility question:  Is it easy for the recipient of the message to take action in response to the message?</p>
<p><strong><em>Presentation</em></strong></p>
<p>Every presentation has a persuasive effect that depends on <strong>two variables:  To WHOM it&#8217;s presented to and WHAT is presented</strong>.  WHAT you communicate is worthless without the right audience (they need what you&#8217;re offering and they need it now or soon), and likewise, it doesn&#8217;t matter how targeted and ripe your audience is for what you&#8217;re presenting if WHAT you communicate is poorly constructed.  In fact, it can do more harm than good to make a poor presentation to the right audience by appearing unprofessional and incapable to deliver quality.</p>
<p>The presentation variables depend heavily on the medium in question.  If it is word-of-mouth, the presentation is what is being communicated by the referrer to the referee.  What are they saying about your site and what you offer?  If it&#8217;s search marketing, is what you&#8217;re communicating in your ad relevant and does it point to a highly relevant landing page?  Are you using highly targeted keywords with ad copy that is tailored to those keywords?  There are quality questions to ask for each medium, and they vary significantly.  But all media should be based on the same quality questions:  Are we communicating to the right audience?  Are we communicating the right message to that audience to effect the desired behavior (click a link, request a quote, submit an e-mail address, buy a product, etc.).</p>
<p><em><strong>Visit Experience</strong></em></p>
<p>Experience is the single factor that determines whether a unique visitor becomes a repeat visitor.  In short, visit experience, how a visitor evaluates their visit retrospectively, is defined by if the visitor:</p>
<p>1.  Felt that the content was relevant to them</p>
<p>2.  Felt that they could navigate and access what they wanted easily and intuitively</p>
<p>3.  Has a compelling, memorable reason to return.</p>
<p>If these three criteria are met, the experience will likely develop into a repeat visit.</p>
<p><br class="spacer_" /></p>
<p>E-commerce traffic means nothing if you can&#8217;t convert that traffic into sales.  In my next post, I&#8217;ll discuss <strong><a title="Optimizing your Conversion Rate" href="http://classyllama.com/magento/optimizing-your-e-commerce-conversion-rate-the-two-conversion-criteria/">the key to optimizing the conversion rate</a></strong>.</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/magento/the-three-keys-to-optimizing-e-commerce-revenue/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Magento SEO Case Study</title>
		<link>http://classyllama.com/magento/magento-seo-case-study/</link>
		<comments>http://classyllama.com/magento/magento-seo-case-study/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 16:37:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General Business]]></category>
		<category><![CDATA[Magento]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=268</guid>
		<description><![CDATA[We have seen dramatic increases in site traffic and better native search positioning for our clients, but we wanted to be sure that the SEO value of  sites that had built great positioning through years of business would not be lost when switching to Magento and using 301 redirects.  As Magento Professional Partners, we now [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/magento/magento-seo-case-study/" title="Magento SEO Case Study"><img src="http://classyllama.com/wp-content/uploads/2010/01/9-718x80.jpg" alt="" class="feed-image" /></a><p style="text-align: center"><img class="size-full wp-image-272 aligncenter" src="http://classyllama.com/wp-content/uploads/2010/01/9.jpg" alt="(9)" width="718" height="356" /></p>
<p>We have seen dramatic increases in site traffic and better native search positioning for our clients, but we wanted to be sure that the SEO value of  sites that had built great positioning through years of business would not be lost when switching to Magento and using <a href="http://en.wikipedia.org/wiki/301_redirect#HTTP_status_codes_3xx" target="_blank">301 redirects</a>.  As Magento Professional Partners, we now have access to a whole new world of resources through Varien, so we asked them about what results they had seen.  Here is a portion of their response, straight from one of Varien&#8217;s many clients:</p>
<p><em>&#8220;Yesterday I attended a very interesting presentation of the new Jack Wolfskin online shop (Globetrotter in Germany) based on Magento (yet community, next year enterprise). They seemed to be very happy with your product and increased traffic (+ customers) by 600% in 10 months just by moving to Magento (due to better SEO capabilities).&#8221;</em></p>
<p>While the results are not necessarily typical, we have seen dramatic results just by implementing Magento with 301 redirects.  Long story short, if you are thinking about switching to Magento and you are concerned with the impact of the change, don&#8217;t be.  The greatest concern you should have is the clients you are missing by not using the robust platform of Magento to enhance your SEO.</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/magento/magento-seo-case-study/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating Success &#8211; 5 Star Service</title>
		<link>http://classyllama.com/magento/creating-success-5-star-service/</link>
		<comments>http://classyllama.com/magento/creating-success-5-star-service/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 14:34:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[classy llama]]></category>
		<category><![CDATA[clients]]></category>
		<category><![CDATA[customer service]]></category>
		<category><![CDATA[interaction]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[strategy]]></category>
		<category><![CDATA[success]]></category>

		<guid isPermaLink="false">http://classyllama.com/?p=253</guid>
		<description><![CDATA[Do you need to stand out from the crowd of competitors around you?  Do you want to be remembered when your clients are deciding where to invest their hard earned resources?
Service is dying in the United States.  Everywhere we look, an epidemic of apathy spreads its disease.  Industries that traditionally emphasize service (eg. foodservice and [...]]]></description>
			<content:encoded><![CDATA[<a href="http://classyllama.com/magento/creating-success-5-star-service/" title="Creating Success - 5 Star Service"><img src="http://classyllama.com/wp-content/uploads/2010/01/customer-service-450x80.jpg" alt="" class="feed-image" /></a><p><img class="size-full wp-image-263 alignnone" src="http://classyllama.com/wp-content/uploads/2010/01/customer-service.jpg" alt="customer-service" width="450" height="300" /></p>
<p>Do you need to stand out from the crowd of competitors around you?  Do you want to be remembered when your clients are deciding where to invest their hard earned resources?</p>
<p>Service is dying in the United States.  Everywhere we look, an epidemic of apathy spreads its disease.  Industries that traditionally emphasize service (eg. foodservice and customer service by phone) are continually adopting lower standards to accommodate lackluster performance.  What is missing?</p>
<p>Service begins with the idea of active listening.  Our era is focused around each of us having the ability to access information easily, but we can often feel that our voices are lost amidst the cacophony of voices around us.  When was the last time that you felt that you were completely heard and understood?  Listen to your clients.  Listen to what they say, to what they mean.  A huge piece of listening is to intentionally engage your mind with what your client is saying.  Intentionally engage.  If you are detached, they will feel your distance acutely, and you will lose effectiveness.  Get rid of distractions, and focus your attention solely on them.  Make them the most important thing in your world, if only for that moment.  Your attentiveness to them will make a greater impact than you can imagine.  People are used to being ignored and marginalized.  The respect you give them when you make them your priority will resonate instantly with them.</p>
<p>Service requires a genuine desire to contribute.  You must understand that your client is a valuable human being who is trusting you with an important piece of their life.  Business decisions that they make will impact them personally.  Value what they say.  The desire to impact someone’s life positively is unusual to the point of extinction.  I am not talking about putting up a façade of empathy.  If you have ever seen a hypocrite, then believe me when I say if you come to the table trying to manufacture a mask of interest, you will be found out.  There are very few things more detrimental to a relationship than phony interest.  Suffice it to say; go genuine, or go home.</p>
<p>Service requires transparency.  You must be willing to put yourself in a vulnerable position.  I am not advocating placing unlimited trust in someone that you do not know, but honesty is always the best policy.  Communicating in an open manner, especially when it is to your disadvantage to do so, will create a level of trust unobtainable in any other way.  Please temper this statement with this caution: carefully weigh your words to ensure that they are palatable.  Criticism is almost never an appropriate choice, whether it be directed toward competitor, co-worker, or client.  Be generous with your praise towards the people around you, and very miserly with criticism.</p>
<p>Cultivate principles in yourself, and in your company, of honesty, valuing your clients, and transparency and wrap them all around a core of listening.  Listen carefully and you will know what they want and what they need.  Listen, and they will remember and feel that you heard them.  Listen, and you will find the core of 5-star customer service.</p>
<p>World class customer interactions are central to our business model at Classy Llama Studios.  This is the first of a series of five posts that I will be writing to relay aspects of our business development strategy specifically related to customer service and its vital role in crafting success for our clients.  Since implementing this strategy we have been able to change the way that our clients interact with us, dynamically impacting both their satisfaction with our work and our ability to hear and apply their business vision effectively.</p>
]]></content:encoded>
			<wfw:commentRss>http://classyllama.com/magento/creating-success-5-star-service/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
