<?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>Solution Log &#124; Antonio David - NVNCBL &#187; e-commerce</title>
	<atom:link href="http://www.nvncbl.com/tagged/e-commerce/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nvncbl.com</link>
	<description>A place to log my programming solutions for future reference</description>
	<lastBuildDate>Sun, 28 Aug 2011 01:20:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Magento Platform Revisited</title>
		<link>http://www.nvncbl.com/2009/01/magento-platform-revisited/</link>
		<comments>http://www.nvncbl.com/2009/01/magento-platform-revisited/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 18:59:27 +0000</pubDate>
		<dc:creator>Antonio</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.nvncbl.com/?p=196</guid>
		<description><![CDATA[It&#8217;s been almost three weeks now since I&#8217;ve started learning the Magento ecommerce platform.  With an impressive array of features, like product comparisons and a web services API, the platform sounds promising.  I had hoped that by the time I&#8217;d revisit this topic, I&#8217;d be able to say I&#8217;ve successfully implemented the software.  Instead I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been almost three weeks now since I&#8217;ve started learning the <a title="Magento - eCommerce Software" href="http://www.magentocommerce.com/" class="external">Magento ecommerce platform</a>.  With an impressive array of features, like product comparisons and a web services API, the platform sounds promising.  I had hoped that by the time I&#8217;d revisit this topic, I&#8217;d be able to say I&#8217;ve successfully implemented the software.  Instead I&#8217;m having trouble setting up my product catalog (it involves importing).  And how can I forget to mention the overall issue of speed?</p>
<p>Let&#8217;s start at the beginning, at installation.  Your web server likely has capable hardware, so you need to be sure that your <a title="Magento - System Requirements" href="http://www.magentocommerce.com/system-requirements" class="external">software configuration meets requirements</a>.  Luckily the host I&#8217;m on was set up just fine the way it was.  Obviously you need to download the software &#8211; I chose to download the Full Release (version 1.1.8 at the time).  <span id="more-196"></span>The zipped package contains 6k+ files so you may want to look into an &#8220;<a title="Unzip on server" href="http://www.3scriptz.com/snippets/unzip-on-server-using-php.html" class="external">unzip on the server</a>&#8221; solution or you&#8217;ll have to wait a <em>long</em> time like I did.  If you decide to wait, take the time to read through the User Guide and the Designer Guide.</p>
<p><strong>Setting up Magento<br />
</strong></p>
<p>Once you have the files uploaded, CHMOD the directory (where you dropped those files) to 777.  Then navigate to the installer script &#8211; http://www.yourdomain.com/your-magento-folder/.  The script is very simple, and the most important part of it is inputting database connection information.  Proceed to create an admin account and log in to the administration panel.</p>
<p>I easily set up a &#8220;website&#8221;, &#8220;store&#8221;, and &#8220;store view&#8221;.  For my purposes, just one of each was necessary so I named them &#8220;clientname_website&#8221;, &#8220;clientname_store&#8221;, and &#8220;clientname_storeview&#8221;.  I haven&#8217;t set up any roles other than Administrators yet, since for now it&#8217;s just myself and another developer .</p>
<p>My two main tasks to work on:</p>
<ol>
<li>Style the front-end to look like our client&#8217;s existing storefront</li>
<li>Import the client&#8217;s existing product catalog data (including manufacturer and category data)</li>
</ol>
<p>I decided to work on styling the front-end first, since it seemed to be the more difficult task.  I imagined thousands of CSS declarations I&#8217;d have to modify, not to mention figuring out the XML-based layout system.  As for the catalog import, I imagined it would simply be the mapping of data fields into the Magento model.  I prefer to tackle more difficult tasks first, for peace-of-mind reasons.</p>
<p><strong>Theming Magento</strong></p>
<p>As I predicted, getting Magento to look the way I needed proved to be a very difficult task.  I was hoping for a more <a title="Wordpress" href="http://www.wordpress.org" class="external">Wordpress</a> style header/content/left+right/footer type of deal, but what I saw was something much more complicated.  To make the simplest of changes took many hours, with my development process being something like:</p>
<ol>
<li>Figure out which file(s) contains the code (HTML, XML)  I need to edit.</li>
<li>Verify I have the right files.  Make a small test change and see if output is affected.</li>
<li>Remind self of what &#8220;block, layout, and template&#8221; mean.</li>
<li>( trial/error, server timeout ) x 10</li>
<li>Break.  Resume. Now, what was I doing? /MyCompany/MyCompany/?  Oh right.</li>
<li>Search Google on how to solve the problem.  Search is fruitless.  Try Experts-Exchange.</li>
<li>( trial/error, server timeout ) x 10</li>
<li>Almost there.</li>
<li>Major revelation! Break.</li>
</ol>
<p>All in all, theming was/is very complicated.  It&#8217;s hard to determine what references what, and how to go about making changes to get the desired effect.  My impression is that the Magento team would have us use their system in one way, and only that way.  The whole hierarchical system seems like a good idea, but in practice it&#8217;s cumbersome and difficult to master.</p>
<p><strong>Importing the Product Catalog</strong></p>
<p>After walking barefoot over hot coals, or theming Magento, I was really hoping that importing the product catalog would be a no-brainer &#8211; just map fields in my existing database to fields in the Magento database.  I couldn&#8217;t have been more wrong.  Magento&#8217;s database model is an instance of the <a title="Entity Attribute Value Model" href="http://en.wikipedia.org/wiki/Entity-Attribute-Value_model" class="external">entity-attribute-value model</a> (EAV).  The difference between EAV and conventional modeling is that table records don&#8217;t represent an instance of a data object.  Instead, the data object&#8217;s values are spread out over multiple tables, making manipulating the delicate database directly incredibly complex.</p>
<p>The route I decided to take, as recommended on several sites, was to:</p>
<ol>
<li>Create a single category (under &#8220;root category&#8221; or &#8220;Default Category&#8221; of course)</li>
<li>Create and assign a single product to that category.</li>
<li>Run the &#8220;Export All Products&#8221; profile to generate a CSV file</li>
<li>Export existing data to CSV according to the exported CSV&#8217;s column format</li>
<li>Upload the new CSV using the &#8220;Import All Products&#8221; profile.</li>
</ol>
<p>When exporting existing data to the Magento format, be sure to use the category ID values for category instead of the category names.  You can find out a category&#8217;s ID by navigating to its &#8220;edit category&#8221; page and looking at the URL.  The ID is in the URL.</p>
<p>When running the &#8220;Import All Products&#8221; profile, you might have to limit the number of records that you import at a time.  If that doesn&#8217;t work, (as in my case) try reducing the number of rows that are in the CSV file.  You would have to upload many many CSV files and run the profile over and over again for those files.  I don&#8217;t understand why adding records to just a few tables should consume a large share of server resources.  Import crashes for me a lot, which isn&#8217;t good because I&#8217;m unclear of whether all products have been imported or not.</p>
<p><strong>Speed and Performance</strong></p>
<p>I&#8217;ve decided to dedicate a section to speed and performance, because Magento&#8217;s slowness was a huge distraction during the development process.  It would be nice if at the very least that the system didn&#8217;t crash every 1/5 page loads.  It would also be nice if I could see the results of a few CSS declarations quickly.  There seems to be a LOT of overhead in Magento, I could go on forever about it.</p>
<p>Based on what I&#8217;ve read, you should go with a dedicated or a virtual-private-server (VPS) if you choose to run Magento.  A lot of developers working on a shared hosting solution seem to have huge speed issues.  Trust me, save yourself a lot of headaches and upgrade your hosting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nvncbl.com/2009/01/magento-platform-revisited/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Magento &#8211; eCommerce Platform for Growth</title>
		<link>http://www.nvncbl.com/2008/12/magento-ecommerce-platform-for-growth/</link>
		<comments>http://www.nvncbl.com/2008/12/magento-ecommerce-platform-for-growth/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 01:12:42 +0000</pubDate>
		<dc:creator>Antonio</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://www.nvncbl.com/?p=81</guid>
		<description><![CDATA[One of our clients is using an in-house system for maintaining product catalogs, customers, inventory, shopping carts, etc.  Being an in-house system, it isn&#8217;t very scaleable and changes to the system take a long time to implement.  So for them, we are going to be installing and setting up Magento.
Now I&#8217;ve only just started to [...]]]></description>
			<content:encoded><![CDATA[<p>One of our clients is using an in-house system for maintaining product catalogs, customers, inventory, shopping carts, etc.  Being an in-house system, it isn&#8217;t very scaleable and changes to the system take a <em>long</em> time to implement.  So for them, we are going to be installing and setting up <a title="Magento" href="http://www.magentocommerce.com" class="external">Magento</a>.</p>
<p>Now I&#8217;ve only just started to become familiar with the platform.  I should also mention that I have no experience working with other eCommerce platforms like OSCommerce or anything, but the talk-of-the-town is that Magento <a title="9 kick ass Open source E-commerce platforms reviewed" href="http://blog.webdistortion.com/2008/05/03/9-kick-ass-open-source-e-commerce-platforms-reviewed/" class="external">blows everything else out of the water</a>.  More importantly, based on what I&#8217;ve read in their comprehensive <a title="Magento User Guide" href="http://www.magentocommerce.com/support/magento_user_guide" class="external">User Guide</a>, the software can handle <strong>(1)</strong> everything our client needs, <strong>(2) </strong>everything they&#8217;ve requested, and <strong>(3)</strong> everything our client hasn&#8217;t even thought of yet.</p>
<p><span id="more-81"></span>Some of the cool stuff includes:</p>
<ul>
<li>Automatic product comparisons page (based on product attributes that you define)</li>
<li>&#8220;Layered navigation&#8221; &#8211; when browsing through a category of products, the layered navigation offers nifty drill-down filters so shoppers can easily find products that are within their budget/needs/tastes.</li>
<li>Related products, upselling, and cross-sellling (important to know the distinction between the three)</li>
<li>URL rewrites (very very very <a title="mod_rewrite and SEO" href="http://www.htmlist.com/how-to/a-simplemod_rewrite-tutorial/" class="external">important for SEO</a>)</li>
<li>Support for UPS, UPS XML, FedEx, USPS, and DHL</li>
<li>Multiple images per product and slick zoom-in capability</li>
</ul>
<p>For the full feature list, go <a title="Magento Features" href="http://www.magentocommerce.com/features" class="external">here</a>.</p>
<p>Expect more posts regarding Magento to come as I journey through deployment.  This post was just kind of like a trailer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nvncbl.com/2008/12/magento-ecommerce-platform-for-growth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shopping Cart Design</title>
		<link>http://www.nvncbl.com/2008/12/shopping-cart-design/</link>
		<comments>http://www.nvncbl.com/2008/12/shopping-cart-design/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 08:43:49 +0000</pubDate>
		<dc:creator>Antonio</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[shopping cart]]></category>

		<guid isPermaLink="false">http://www.nvncbl.com/?p=35</guid>
		<description><![CDATA[I was assigned to work on a shopping cart for an online clothing retailer.  By the time this client approached us, it was just a few days before Christmas, and their shopping cart had a big problem.
Say for example that you added a blue polka dot shirt of size &#8220;large&#8221; to your shopping cart.  Then, [...]]]></description>
			<content:encoded><![CDATA[<p>I was assigned to work on a shopping cart for an online clothing retailer.  By the time this client approached <a href="http://www.redstage.com" class="external">us</a>, it was just a few days before Christmas, and their shopping cart had a big problem.</p>
<p>Say for example that you added a blue polka dot shirt of size &#8220;large&#8221; to your shopping cart.  Then, after continued browsing through the online catalog, you decide that you want a &#8220;small&#8221; blue polka dot shirt.  The problem was that after adding this shirt of size &#8220;small&#8221;, your shopping cart would contain <strong>two</strong> (correct) shirts of size <strong>small</strong> (wrong).  Obviously, you should have a small shirt and a large shirt.</p>
<p><span id="more-35"></span>This cart was indexing items by product ID, and not accommodating for multiple sizes.</p>
<p>Our solution for them was a cart structured to be unique on product ID and size.  Short, Sweet, and Simple.  S, S, &amp; S the solution may have been, it still took a long time to develop because of the fact that there was no sandbox (development) environment and the system was in the process of taking orders as we were developing.  Some would say that&#8217;s a huge no-no, but the issue had to be addressed.  With the utmost planning and preparation, the coding was done and <em>no order processes were interfered with</em>.</p>
<p>On a humorous note, I charged my credit card a $xxx.xx item (yes, in the hundreds of dollars) to test the new shopping cart&#8217;s functionality.  When doing e-commerce development, make sure to obtain <strong>test credit card numbers</strong>.  Most online payment processors should have these readily available for developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nvncbl.com/2008/12/shopping-cart-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

