It’s been almost three weeks now since I’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’d revisit this topic, I’d be able to say I’ve successfully implemented the software. Instead I’m having trouble setting up my product catalog (it involves importing). And how can I forget to mention the overall issue of speed?
Let’s start at the beginning, at installation. Your web server likely has capable hardware, so you need to be sure that your software configuration meets requirements. Luckily the host I’m on was set up just fine the way it was. Obviously you need to download the software – I chose to download the Full Release (version 1.1.8 at the time). The zipped package contains 6k+ files so you may want to look into an “unzip on the server” solution or you’ll have to wait a long time like I did. If you decide to wait, take the time to read through the User Guide and the Designer Guide.
Setting up Magento
Once you have the files uploaded, CHMOD the directory (where you dropped those files) to 777. Then navigate to the installer script – 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.
I easily set up a “website”, “store”, and “store view”. For my purposes, just one of each was necessary so I named them “clientname_website”, “clientname_store”, and “clientname_storeview”. I haven’t set up any roles other than Administrators yet, since for now it’s just myself and another developer .
My two main tasks to work on:
- Style the front-end to look like our client’s existing storefront
- Import the client’s existing product catalog data (including manufacturer and category data)
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’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.
Theming Magento
As I predicted, getting Magento to look the way I needed proved to be a very difficult task. I was hoping for a more Wordpress 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:
- Figure out which file(s) contains the code (HTML, XML) I need to edit.
- Verify I have the right files. Make a small test change and see if output is affected.
- Remind self of what “block, layout, and template” mean.
- ( trial/error, server timeout ) x 10
- Break. Resume. Now, what was I doing? /MyCompany/MyCompany/? Oh right.
- Search Google on how to solve the problem. Search is fruitless. Try Experts-Exchange.
- ( trial/error, server timeout ) x 10
- Almost there.
- Major revelation! Break.
All in all, theming was/is very complicated. It’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’s cumbersome and difficult to master.
Importing the Product Catalog
After walking barefoot over hot coals, or theming Magento, I was really hoping that importing the product catalog would be a no-brainer – just map fields in my existing database to fields in the Magento database. I couldn’t have been more wrong. Magento’s database model is an instance of the entity-attribute-value model (EAV). The difference between EAV and conventional modeling is that table records don’t represent an instance of a data object. Instead, the data object’s values are spread out over multiple tables, making manipulating the delicate database directly incredibly complex.
The route I decided to take, as recommended on several sites, was to:
- Create a single category (under “root category” or “Default Category” of course)
- Create and assign a single product to that category.
- Run the “Export All Products” profile to generate a CSV file
- Export existing data to CSV according to the exported CSV’s column format
- Upload the new CSV using the “Import All Products” profile.
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’s ID by navigating to its “edit category” page and looking at the URL. The ID is in the URL.
When running the “Import All Products” profile, you might have to limit the number of records that you import at a time. If that doesn’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’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’t good because I’m unclear of whether all products have been imported or not.
Speed and Performance
I’ve decided to dedicate a section to speed and performance, because Magento’s slowness was a huge distraction during the development process. It would be nice if at the very least that the system didn’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.
Based on what I’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.



Mar 09
Just wanted to let you know that I shared the same feeling and step process when building our site through Magento. Check it out if you want. http://www.productionskateboards.com. We actually have moved to a dedicated server, but still get crashes, mostly on the admin side. But it seems to crash more from my additional code then the magento code.. Anyway, thanks for sharing your frustrations!! Couldn’t agree more.