Magento Beginner's Guide
Michael J. Ross writes "The shopping cart systems that power online stores have evolved from simple homebrew solutions in the CGI era to far more powerful open source packages, such as osCommerce. But even the later systems are frequently criticized as suffering from poorly-written code and inadequate documentation — as well as for being difficult to install and administer, and nearly impossible to enhance with new functionality and improved site styling, at least without hiring outside help. These problems alone would explain the rapidly growing interest in the latest generation of shopping cart systems, such as Magento, purported to be outpacing all others in adoption. In turn, technical publishers are making available books to help developers and site owners get started with this e-commerce alternative, such as Magento: Beginner's Guide, written by William Rice." Read on for the rest of Michael's review.
Magento: Beginner's Guide
author
William Rice
pages
300
publisher
Packt Publishing
rating
8/10
reviewer
Michael J. Ross
ISBN
978-1847195944
summary
A starter guide to this popular e-commerce shopping cart.
This title was published on 15 April 2009 by Packt Publishing, under the ISBN 978-1847195944. The firm makes available a Web page dedicated to the book, where visitors can find information on how to purchase the print or PDF versions of the book (or both as a bundle, at substantial savings). The site also has a link labeled "Code download" (even though there isn't any downloadable code), another link for viewing any errata (of which there is one reported, as of this writing), and a link for downloading a sample chapter (the third one, "Categories and Attributes").
The bulk of the book's 300 pages are organized into eleven chapters, which are intended to take the reader through the basic topics, in the same order they might be encountered by anyone developing a Magento-based store for the first time: an introduction; Magento system requirements and installation; product categories and attributes; tax rules; adding product information; site styling; advanced product functionality; CRM; payment processing; shipping configuration; and order fulfillment. These chapters are followed by an appendix that delineates, as numbered lists, all of the steps covered in greater detail in the chapters. The book concludes with an index whose value is immediately brought into question by the "products" entry, which presumably would be one of the most lengthy sections for an e-commerce book such as this one, yet contains only two entries, and neither one has a page number.
The book's first chapter begins by stating what Magento and the book offer, which were already covered in the preface. The author then introduces the demo store (an online vendor of coffee beans) to be used throughout the book, with screenshots. Readers can skip over this chapter, without missing anything of importance. This chapter, like all that follow, concludes with a summary, which adds no value to the book.
In Chapter 2, the author patiently steps the non-technical user through each phase of installing Magento on a Web server, with an emphasis upon Linux systems, which apparently are far less problematic for Magento than using a Windows-based hosting account (imagine that). PHP novices will likely appreciate the author's tip on how to use phpinfo() to see their server settings, but should be warned to delete that file so hackers cannot also stumble upon that information. Also, there are some technical inaccuracies in the author's discussion of search engine friendly URLs. In step 1 of the installation, he should have explained why he chose the Full Release and not the Downloader. On page 31, he instructs the reader to set some Magento files to permissions of 777, even though the previous page stated that his Web hosts' control panel does not allow that setting. Some readers may be confused by this, and should be advised to use their FTP programs for accomplishing this task, if their control panel has the same limitation. In step 3, the author could have provided some guidance as to what the reader can do if Magento refuses to proceed with the installation and provides no error messages, even though the database information is valid and confirmable by logging in at the command line. Of course, it is difficult to anticipate all the possible problems that a user may encounter. Even the official Magento documentation does not appear to address this particular issue. Lastly, the checklist at the end of the chapter, which specifies four items to confirm prior to installation, obviously should have been presented at the beginning of the chapter.
In the third chapter, the author explores some key concepts needed in working with Magento: products, categories, and attributes. Throughout the book, these three common terms — and later, "shopping cart," "payment gateways," etc. — are presented in title case, as if they were proper names, which they are not. Within the text, this formatting gives them the appearance of menu or page names, which quickly becomes annoying. A glaring example of this is section 16 on page 59. On the same page, the reader will encounter a rather cryptic heading, "Have a go hero." Nonetheless, readers should find the topic coverage to be quite useful, including tips on enabling a product navigation menu, optimizing categories, entering products, creating product images, and setting attributes. The next two chapters explain how to apply taxes to customer purchases, and how to add "simple products" (those without customer-changeable attributes), respectively. At first glance, one might conclude that Chapter 5 should immediately follow Chapter 3 — or be combined into one chapter — since both deal primarily with products. But within Magento, tax rules are a prerequisite for properly creating new products in one's store, so the chosen order makes sense.
The author shifts gears with the sixth chapter, which explores basic styling, i.e., customizing the appearance of a Magento-based storefront. The majority of the changes can be accomplished easily by the reader, because most of them are made within the Magento administrative area, and not through any involved editing of the CSS files of the default theme. Chapter 7 covers the topics of related products, grouped products, and configurable products — and thus clearly should have followed Chapter 5. Regardless, the author's use of illustrative examples, in creating the demo site, is quite helpful for the reader to see how to use each dialog box in the process of creating the various types of products.
The last four chapters of Magento: Beginner's Guide address four essential aspects of building and running an online store, beyond the products themselves: Chapter 8 is fairly brief, but explains how to configure a store's e-mail addresses and contact form (but not how to customize the e-mail templates), as well as the functionality made available by Magento for administering customers once they have become registered users on the store site. The subsequent chapter shows how to set up a Magento site to accept customer payments using PayPal, Authorize.Net, and other electronic payment options. Chapter 10 explains how to configure the various shipping options within Magento, and, like the previous chapter, focuses on trade-offs among the various options rather than the details of how to complete each dialog box. Confusingly, on page 219, the author states that you can charge a handling fee with the flat rate method, but four pages earlier states the exact opposite. The last chapter in the book covers the various phases of order fulfillment, as well as order management.
Despite the value of the book's contents, the material would have benefited from some proper editing, evidenced alone by the many errata: "freelance[r]" (on the "About the reviewer" page), "[and] so" (page 2), "distinguishes" (page 3), "top[-]two" (page 10), "Paypal" (page 11), "Card(saved)" (page 11), "php" (page 13), "reading and article" (page 17), "you web host" (page 27), "/single-origin-coffees" is missing (page 55), "Attribute[']s Model" (page 73), "Add New [Attribute] Set" (page 75), "answer[s]" (page 78), "zip codes" (pages 85-86, and others), "characters;" (should be a comma; page 104), "later [in the] book" (page 131), "discuss about" (page 131), "direct[ion] replacement" (page 133), "graphics;" (should be a comma; page 138), "tab. to" (page 141), "2@ brew..." (page 182), "can sit[e]" (page 190), "such [as] Visa" (page 195), and "Shopping Card" (page 197). Some of these errata are likely not attributable to the author, but instead introduced during the production phase of publication. There are other indicators that quality control was lacking, such as an errant period tacked on to every "Chapter 5" in the page title, on all the pages of that chapter. On a more subjective note, I found Packt Publishing's use of four different font sizes within the table of contents — no doubt intended to make higher level section names stand out — to actually reduce speed of scanning and comprehension, just as it does on Web pages that have half a dozen or more font sizes on a single page. The practice is not limited to this particular title, but appears to be standard in their lineup of books. In addition, the longer subheads are shown in such a thick and compressed font face as to be quite difficult to read, e.g., on page 239.
Throughout his book, the author's writing style is generally clear and approachable, though occasionally choppy. His background in technical instruction is exemplified by his logical, step-by-step explanations. Some readers may find this style too repetitive, such as the many mini-summaries — labeled "What just happened?" — scattered throughout the book. These are unnecessary, waste space, and could be excised. One instance of pedantry (on page 105) deserves special recognition/ribbing: "Yes and No are self-explanatory."
But all of these aforementioned flaws are relatively minor — particularly to the reader anxious to put up a new online storefront with minimum delay. Magento: Beginner's Guide is a detailed and lucid introduction to an e-commerce system quickly growing in favor.
Michael J. Ross is a freelance Web developer and writer.
You can purchase Magento: Beginner's Guide from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
The bulk of the book's 300 pages are organized into eleven chapters, which are intended to take the reader through the basic topics, in the same order they might be encountered by anyone developing a Magento-based store for the first time: an introduction; Magento system requirements and installation; product categories and attributes; tax rules; adding product information; site styling; advanced product functionality; CRM; payment processing; shipping configuration; and order fulfillment. These chapters are followed by an appendix that delineates, as numbered lists, all of the steps covered in greater detail in the chapters. The book concludes with an index whose value is immediately brought into question by the "products" entry, which presumably would be one of the most lengthy sections for an e-commerce book such as this one, yet contains only two entries, and neither one has a page number.
The book's first chapter begins by stating what Magento and the book offer, which were already covered in the preface. The author then introduces the demo store (an online vendor of coffee beans) to be used throughout the book, with screenshots. Readers can skip over this chapter, without missing anything of importance. This chapter, like all that follow, concludes with a summary, which adds no value to the book.
In Chapter 2, the author patiently steps the non-technical user through each phase of installing Magento on a Web server, with an emphasis upon Linux systems, which apparently are far less problematic for Magento than using a Windows-based hosting account (imagine that). PHP novices will likely appreciate the author's tip on how to use phpinfo() to see their server settings, but should be warned to delete that file so hackers cannot also stumble upon that information. Also, there are some technical inaccuracies in the author's discussion of search engine friendly URLs. In step 1 of the installation, he should have explained why he chose the Full Release and not the Downloader. On page 31, he instructs the reader to set some Magento files to permissions of 777, even though the previous page stated that his Web hosts' control panel does not allow that setting. Some readers may be confused by this, and should be advised to use their FTP programs for accomplishing this task, if their control panel has the same limitation. In step 3, the author could have provided some guidance as to what the reader can do if Magento refuses to proceed with the installation and provides no error messages, even though the database information is valid and confirmable by logging in at the command line. Of course, it is difficult to anticipate all the possible problems that a user may encounter. Even the official Magento documentation does not appear to address this particular issue. Lastly, the checklist at the end of the chapter, which specifies four items to confirm prior to installation, obviously should have been presented at the beginning of the chapter.
In the third chapter, the author explores some key concepts needed in working with Magento: products, categories, and attributes. Throughout the book, these three common terms — and later, "shopping cart," "payment gateways," etc. — are presented in title case, as if they were proper names, which they are not. Within the text, this formatting gives them the appearance of menu or page names, which quickly becomes annoying. A glaring example of this is section 16 on page 59. On the same page, the reader will encounter a rather cryptic heading, "Have a go hero." Nonetheless, readers should find the topic coverage to be quite useful, including tips on enabling a product navigation menu, optimizing categories, entering products, creating product images, and setting attributes. The next two chapters explain how to apply taxes to customer purchases, and how to add "simple products" (those without customer-changeable attributes), respectively. At first glance, one might conclude that Chapter 5 should immediately follow Chapter 3 — or be combined into one chapter — since both deal primarily with products. But within Magento, tax rules are a prerequisite for properly creating new products in one's store, so the chosen order makes sense.
The author shifts gears with the sixth chapter, which explores basic styling, i.e., customizing the appearance of a Magento-based storefront. The majority of the changes can be accomplished easily by the reader, because most of them are made within the Magento administrative area, and not through any involved editing of the CSS files of the default theme. Chapter 7 covers the topics of related products, grouped products, and configurable products — and thus clearly should have followed Chapter 5. Regardless, the author's use of illustrative examples, in creating the demo site, is quite helpful for the reader to see how to use each dialog box in the process of creating the various types of products.
The last four chapters of Magento: Beginner's Guide address four essential aspects of building and running an online store, beyond the products themselves: Chapter 8 is fairly brief, but explains how to configure a store's e-mail addresses and contact form (but not how to customize the e-mail templates), as well as the functionality made available by Magento for administering customers once they have become registered users on the store site. The subsequent chapter shows how to set up a Magento site to accept customer payments using PayPal, Authorize.Net, and other electronic payment options. Chapter 10 explains how to configure the various shipping options within Magento, and, like the previous chapter, focuses on trade-offs among the various options rather than the details of how to complete each dialog box. Confusingly, on page 219, the author states that you can charge a handling fee with the flat rate method, but four pages earlier states the exact opposite. The last chapter in the book covers the various phases of order fulfillment, as well as order management.
Despite the value of the book's contents, the material would have benefited from some proper editing, evidenced alone by the many errata: "freelance[r]" (on the "About the reviewer" page), "[and] so" (page 2), "distinguishes" (page 3), "top[-]two" (page 10), "Paypal" (page 11), "Card(saved)" (page 11), "php" (page 13), "reading and article" (page 17), "you web host" (page 27), "/single-origin-coffees" is missing (page 55), "Attribute[']s Model" (page 73), "Add New [Attribute] Set" (page 75), "answer[s]" (page 78), "zip codes" (pages 85-86, and others), "characters;" (should be a comma; page 104), "later [in the] book" (page 131), "discuss about" (page 131), "direct[ion] replacement" (page 133), "graphics;" (should be a comma; page 138), "tab. to" (page 141), "2@ brew..." (page 182), "can sit[e]" (page 190), "such [as] Visa" (page 195), and "Shopping Card" (page 197). Some of these errata are likely not attributable to the author, but instead introduced during the production phase of publication. There are other indicators that quality control was lacking, such as an errant period tacked on to every "Chapter 5" in the page title, on all the pages of that chapter. On a more subjective note, I found Packt Publishing's use of four different font sizes within the table of contents — no doubt intended to make higher level section names stand out — to actually reduce speed of scanning and comprehension, just as it does on Web pages that have half a dozen or more font sizes on a single page. The practice is not limited to this particular title, but appears to be standard in their lineup of books. In addition, the longer subheads are shown in such a thick and compressed font face as to be quite difficult to read, e.g., on page 239.
Throughout his book, the author's writing style is generally clear and approachable, though occasionally choppy. His background in technical instruction is exemplified by his logical, step-by-step explanations. Some readers may find this style too repetitive, such as the many mini-summaries — labeled "What just happened?" — scattered throughout the book. These are unnecessary, waste space, and could be excised. One instance of pedantry (on page 105) deserves special recognition/ribbing: "Yes and No are self-explanatory."
But all of these aforementioned flaws are relatively minor — particularly to the reader anxious to put up a new online storefront with minimum delay. Magento: Beginner's Guide is a detailed and lucid introduction to an e-commerce system quickly growing in favor.
Michael J. Ross is a freelance Web developer and writer.
You can purchase Magento: Beginner's Guide from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
I read the title as Magneto Beginner's Guide. I must read too many comic books.
What I noticed when I evaluated osCommerce and few other ecommerce packages is the people who developed the package didn't have even a small understanding of how to use style sheets. This was a few years ago, so maybe things have improved since then.
-- Will program for bandwidth
Magento is a nice system, but it's BIG. It's not bloated. Just it's architecture makes it really slow. With one item in db, default configuration and served locally it shouldn't really take almost two seconds to refresh a page.
Extreme Programming - Redundant Array of Inexpensive Developers
As an e-commerce business owner, and a former web developer, I just tried Magento based on a suggestion from my designer. It's not for regular people. There's no formal documentation (literally... none), and like with many OSS projects, "community" support is non-existent. Magento might be a neat project for a large team of professional developers working on e-commerce for a company with very deep pockets, but I don't think that a beginner of any kind should touch it. I'd rather have less functionality, but more function.
I don't respond to AC's.
I've tried this and it had some potential. Very clean looks and easy to use backend, but it felt horrible performance-wise overall. Also there are Paypal problems that seem to have been lingering for long time (retrieving response from PP and analysis, notifications).
Magento does do a better job in these areas than say, osCommerce, but there are still massively underdocumented portions of the code base. The code is clean and extensible, but horribly inefficient, to the point where a lot of people speculate that the Magento team wants it to be like that, so when your store takes off you are more likely to hire them to speed things up.
The problem with Magento is not that it is too complex for a non-technical user. The problem with Magento is that is not properly documented or commented for technical users. Non-technical users that stay within the Magento default store box will have no problems, developers that try to move outside this box will be frustrated, constantly.
Take a look at the code. There are precisely zero comments. Take a look at the documentation, there is almost no official documentation. This makes developing with Magento extremely hard as they employ some convoluted structures for very simple tasks. Eventually one finds that the code is generally of a high standard and that most things can be done without too much effort, but the learning curve is excessive.
I believe that the lack of comments and documentation is part of an intentional strategy by Varien to drive potential users to their closed-source Enterprise solution. The power of the community edition is enticing, but finding knowledgeable developers is nearly impossible and training inhouse staff takes far too long due to the conspicuous absence of documentation and comments.
Finally, I think it is pretty clear that PHP was a very poor choice for such a large framework. The lengths they need to go to implement something that appears to be convention bases and sort of but not quite dependency injected are extreme. PHP's inability to execute code asynchronously is a huge headache and the EAV model is cumbersome to say the least. Performance is seriously wanting.
So yeah, Magento is enticing as hell to non-technical beginners. However ultimately the combination of Varien's refusal to document/comment and their poor technology choices make this a platform that just won't scale. Whats needed to at least partially change that is Magento for Developers*
*There is a Magento for architects, but its already out of date and very short on real details.
... governing endorsements and testimonials: http://www.ftc.gov/opa/2009/10/endortest.shtm
This isn't news. This is fucking marketing. As good as this software may or may not be, this is not newsworthy, and is nothing more than shameless promotion of a product.
Odi profanum vulgus et arceo
It has a great backend and tons of features. But.. it's difficult (damn near impossible) to skin. And the other huge problem is the AJAX multipage checkout. It just doesn't work for some users, and there's no alternative.
Does it handle getting your share of Obama's stash? He's giving away all that money from his own stash, so you should have an easy way of handling that.
Who would win this election: Andrew Weiner vs Andrew Weiner's weiner.
.. This statement is interesting.
A lot of the e-commerce software you can get for free is written in common web development languages, e.g. Perl/PHP/Ruby/ASP.
So is this a question of lacking in-house competence from a SMB perspective? Most OSS e-commerce packages I've used have been a breeze to install, never mind to customize.
The truth to the statement is that some things are, at best, poorly documented. But if worst comes to worst, track down the bit of script you need to know (how it works) and read the code?
that based on experience, retailers that propose setting up an ecommerce site should forgo all "canned" shopping carts and fork over the minimal money it will cost to have one custom written to fit your business.
If you are attempting to launch a business without the initial funds to spend around $1000 on a custom shopping cart, with the expectation of spending more money down the road adding custom features tailored to your business if proved successful, then you are not ready to start your business.
Did you ever wake up in the morning, with a Zombie Woof behind your eyes? -- FZ
I wonder if this book can show everyone how to import products reliably? The current import system is total crap and often needs to be completely bypassed.
Jason-Palmer.com
I don't want to talk about PHP's technical merits. We could have an endless flamewar about those. I just want to say that PHP become a lingua franca of web development. Pretty much everyone (especially in the Bay Area echo chamber) give you the my-god-you've-just-killed-that-kitten look if you propose writing a package in PHP. PHP isn't used because it's good, but because it's popular, and has a huge developer base. You can make a career out of knowing nothing but PHP, and people do.
Which is why I've decided to never do web work again. Give me embedded programming, systems work, scientific work, game development -- anything but web work. It's socially impossible to avoid using PHP for it, and PHP is one of a very few languages that viscerally infuriates me. I'll program using it and start cursing the developers. I can't stand it.
Yes, yes, you have Java, Ruby, *.NET, and lots of other choices. And they're used by some. But they don't have anything close to PHP's ungodly-huge marketshare, at least in the small-to-medium website world.
Where can I find somebody to build a functional custom shopping solution for around $1000? I don't think that $1000 will go very far towards something that's functional and reliable.
I don't respond to AC's.
... is 'Magento' itself actually any good or not ?
I agree that Magento is a properly designed enterprise commerce package and that most other OS commerce packages are spaghetti. But Magento is just... Impenetrable. You wander around forever just trying to figure out how to change some simple thing. Knock the PHP hack carts all you want, but I bet I can figure out how to graft on a quick feature about a billion times faster in that than in Magento. And when you're talking OS solutions, a great many users will be of the hacker type just wanting to git 'r done.
Magento is just waaaaaay to "pure" for my tastes.
======================================
Writers get in shape by pumping irony.
This reminds me of ATG's eCommerce platform, or rather their entire product stack for that matter. Bad architecture == bad foundation == maintenance headache == bloated servers == non performant
Having made an ecommerce site from magento itself, I'd say that although it's way better than OSCommerce, it's slow, and very poorly documented. It is as if Varien wanted the poor documentation to happen so that you can hire them for helping set up your site. It is slow because it practically uses EAV for most of it's data. To fetch manually for example, an order, you'd have to parse through different tables to find out what that order exactly is. And the whole system is one big object extension of the Zend framework! Adding APC and memcache makes it work better and faster, but it is still slow. Also, the templating system is daunting, to say the least, for beginners. Also, one big peeve of mine is that it has limited order statuses - shipped, processing, complete, among others, and so far, I haven't found a way to add this reliably (although you can add it to a drop down box in the admin panel, what happens is that you cannot call it through a class) But once you get the hang on it (mostly, since looking at the huge amount of code without comments is very very overwhelming), it can be very flexible. So far, we've made a system to let it contact a fulfillment company for deliveries at the start of every day, and let the fulfillment company update us when those orders were delivered and shipped out. It mostly works too, and it's fairly automated, that we've just left it alone.
i work in the field. im a programmer.
magento is shiny, looks good and whatnot, but the code seems to be done in a way to discourage external development and modification. it takes 2-3 times longer to do some modification to magento that it takes to do on other shopping cart software.
im suspecting this to be a new trend though. i noticed similar other software (non shopping cart) out there, which were open source, but coded in such a way that (as if to show your left ear with your right hand), it would become complicated and manually time consuming to modify, therefore discouraging 3rd party development.
we had some former clients jumping on magento bandwagon. things went well for them at the start. but as their needs for modification increased with passing time, they had to migrate their store to another cart because it became too expensive for them to fund modifications to their store software.
Read radical news here
I've tried Magento in the past, as an alternative to osCommerce and Zencart. The templating system on the later two is horrendous, Zencart being slightly better. The backend store management leaves a lot to be desired as well, but they are usable products. The default template for Magento looks slick enough that you don't have to mess with it for small time operations. The backend is also quite nice, at least compared to the other two (this is a matter of preference and opinion), however there are also some bonehead things.
The one problem I had with Magento was its performance. It's probably not an issue if you have fast and expensive web hosting. I was trying to host a webstore on phpwebhosting.net, which is decently cheap and I had no problems with it up until that point. Whereas there were no performance issues with osCommerce or Zencart, Magento would take 30seconds to 1 minute to load the first time you viewed it. After that it was ok, but the first load was killer. It's not that it loaded one piece at a time slowly. There was just nothing, for a long time, then everything would appear at once. As it turns out, there is one killer of an sql query sent out right off the bat. This is quite unacceptable as no customer would wait that long.
I tried it on and off for a year but there was never any improvement. Basically, it's not a webstore for small time guys on small servers. You're better off sticking with Zencart.
Zencart works for us. Decent guides are available, and search engines seem to like the way it presents products.
Many hosting providers will install it as part of your hosting package. Hosting a fully functional Zencart setup can cost 20/ month with scads of drive space.
Integrating it with your pos is easy - export out of your pos, and follow the instructions using the Easypopulate add-on.
You can add Live Help via sideboxes, or add other content pretty much as you see fit. You just find the relevant code section, and modify or add to it.
The forums that help support Zencart are chock full of people who've asked what you're going to ask, and many times get a decent answer from a developer or at least a lead in the right direction.
I don't resell, or sell Zencart, just noticed its absence from the discussion.
Magento was a headache in the beginning. The code is abstracted beyond imagination. Imagine every database table (there are more than 200 in my install) has at least 3 classes associated with it. Every new section of a page needs at least 1 class and 1 template file associated with it. There are literally hundreds of xml files that hold configuration options. Most top-level classes extend other classes 3-4 layers deep. Wrapping your head around this takes a lot of time and effort. Don't even get me started on the EAV architect. Look it up on wikipedia if you don't know what it is.
However, once you learn Magento's MVC architect and understand the EAV architect and once you get a feel for all the base classes, then it is beautiful. It is amazingly extensible. True, it takes twice as long to do anything if you follow the Magento way. However, you easily save as much time in terms of extending functionality later on and maintaining what you did.
True, back in the day Magento was slow. It was not just slow, it was dog slow. This is not the case anymore. I run a shop with about 400,000 products and over 6,000 categories. Every page loads in one second or less according to YSlow. I run it off of two servers. And this is the community edition.
So, if you haven't looked at Magento I would recommend giving it a real shot. Its true, you will need to understand programming if you don't want to do anything basic. Even theming will require understanding of file structure and xml files. But, if you can handle this, then you will learn to love Magento.
Anyone who has needed to deal with credit card security concerns and being audited by Visa or one of the big processors for PCI compliance will run to a commercially supported ecommerce product or ASP payment service. The days of custom coded carts for a serious online business is over. It doesn't matter whether the custom coded cart is more or less secure, and it also doesn't matter if 90% of online credit card security concerns are total bullshit propagated by the security consultants - this is about risk mitigation and about business owners having someone they can point to if the PCI audit is required. So, yeah, you can continue to make a few bucks selling custom carts or low-cost carts to micro-businesses, but you won't be making a living off any well-known brands.
If all you want to do is theme it and go, then it's pretty awesome. It's out of the box functionality exceeds software costing $100,000. If you need to customize anything, then be prepared to enter a dimension where pain and chaos reign, complicated doesn't even cover it, and there's almost zero good documentation.
Foreword: I work as a web developer, and work in highly complex dynamic systems, specializing in UIs and system integration.
I've worked with both osCommerce and Magento. Magento has very good marketing engine, really efficient throwing around of buzzwords. Sure it says on the cover to use Zend Framework and MVC pattern. What's not to like? EVERYTHING. The implementation is crappy even at best. It's not true MVC as view components actually FETCH DATA oO;
I spent about 3 weeks to get an new store launched, and launch was even delayed. The same work, the same system could have been done using osCommerce in a week...
I would recommend Magento only to my worst enemy, even that might be slightly too cruel. The list of problems with Magento is too immense to even start listing ... But i do say: Put it to SVN, checkout to empty directory and try if it work ;)
(Oh, and the development documentation for Magento is complete hokus pokus marketing bullshit)
Pulsed Media Seedboxes
A big piece missing from Magento is the content management portion. There has been talk about integrating Magento as a third party add-on to drupal, but its so different in how it handles content, that it doesn't really work.
A decent alternative is Ubercart and Drupal. Ubercart, while not the best example of -good- drupal code, it is getting better, and d7uc is planning on bringing much of the code to drupal standards. One big plus about ubercart is its extensibility. Despite it being a bloated shopping system (built for a mom-and-pop shop, similar to magento), it is easy to override functions and get it to do what you want. Ubercart is also used extensively on major websites, almost everything that uses drupal 6 and ecommerce.
In the dark days of ubercart, or when I'm banging my head on a problem that cannot be easily solved with it, I've looked to magento, but then came running back.
I've read it, and this book is exactly what the makers of Magento should have done.
I don't think it's worth the money, maybe 5$.
A project with no documentation and the comments stripped out, Qel Surpise!
A shopping cart should be simple and small. It should be unobtrusive.
What it should do is give you the calls to display, review, modify, fill your shopping cart, check out and take a payment.
Nothing more, nothing less.
At that point you can integrate it into whatever web site your building using your styling and markup.
This ain't brain surgery, it is a database. and the most complex thing should be a bit of javascript to update the totals.
Hey KID! Yeah you, get the fuck off my lawn!
What I want is a simple shopping cart that's open-source, and lets me use my existing website (without turning it into some database-driven monstrosity) with its simple, fast-loading pages, which only use PHP for the headers and footers.
Even if you don't put product descriptions in a database, you'll still need some sort of database to store unfinished and finished orders. If you don't want to use a database on your web site, use the PayPal cart.
The problem I've ran into with most OSS (and even paid) ecommerce systems is they dont understand basic accounting nor do they understand how a business operates.
Take zen-cart for example. When a customer cancels an order, what is the proper thing to do? Well, I'll tell you what *isn't* the proper thing... DELETE THE ORDER FROM THE DATABASE!!
The second I found out that the way to hide/cancel an order was deleting it from the database, I ran away from zen-cart. You never delete an order... what if you got audited? What if the customer wanted to actually go ahead with the order? What if you wanted to get a report on the number of canceled orders? You can't if you delete the damn thing from the database!!
Really, the problem is these products had their interface designed to suit their database schema. In reality, the design and workflow should come first, and the database schema should fall out of that.