E commerce with Drupal 7 Ubercart or Drupal Commerce?

by Mark Royko

Ubercart is still the best game in town for Drupal 6, and it continues marching on — Ubercart 3 is a port of the project to Drupal 7, and there is a committed developer base currently at work. Lately though, the choices for Drupal 7-native shopping carts has gotten bigger, with the introduction of Drupal Commerce. 

Commerce is an exciting entry to the Drupal shopping cart category written by some of the same developers who previously managed Ubercart. (It's lead developer, Ryan Szrama, was the former Ubercart lead.) Unlike Ubercart, Commerce is a Drupal-7 only module. While it's technically been in development since 2009,  it wasn't entirely ready for production and it's only been wIthin the last few months that package downloads have gained momentum. Meanwhile additional support modules are rounding out the project's offerings, making it a serious option for new installations. So how do the two compare?

While Ubercart delivers a lot of power in its out-of-the-box installation, Commerce aggressively strips its features down to the barest of bare bones. For example, new Commerce users might be surprised to find that it doesn't include a shipping module in its core, or even a basic payment gateway. To do either, you'll need to download additional modules. 

Products as Entities

Users who have already use Ubercart understand that it follows a more typical Drupal 6 data structure. Basically, products are nodes.  That means entering a products in Ubercart is a  little like entering a story, only there are more fields for product-related values like price and weight. Meanwhile, product variations (ie color, size, etc.) are treated as "attributes" of the main product, so if a product is green or blue, large or small, any option added to the product still references a single product node.

For end users this architecture is easy to understand: A product is entered once, and any additional options refer to the main product node. When you publish a product, it shows up on your website.

Commerce, though, uses Drupal 7's entity system and treats any options as a new, distinct products. So, if a merchant is selling a T-shirt in red or blue, these exist as two separate products even though they might be exactly the same in every other respect. This approach is a lot closer to how retailers who use traditional unique SKUs  — Stock Keeping Units  —  operate. (It also better fits a database developer's perspective too, since technically this is a more abstracted approach to data structures.)

Products in Commerce aren't traditional nodes. Instead, they're really just data units that store the unique information about each SKU. By default, these units aren't displayed on the site on their own. Instead, users have to create separate display nodes tying product variations together for display on the site. (A product display node handles the Title and Body text. It also collects information about product variations and displays them to the visitor.)

What all this means is that creating a product is actually a three-part process. Imagine a retailer selling t-shirts. The sizes are small, medium and large and the colors are blue and red. To achieve this in Drupal Commerce, a user follow theses steps: First, the retailer creates a 'tshirt' product type. (Fields for any variation are created at this step, so size and color options are added here.). Next, individual SKUs are entered for each possible combination of size and color. Finally, a new product "display" is created, which includes the title and body text.  The separate SKUs you entered earlier are added here through an auto-complete field, much as you'd add taxonomy terms to a Drupal node. (Ryan Szmara writes about the process in the Drupal Watchdog.)


They both need to completely re-architect the way they display documentation: When it comes to configuration, the last thing I want to see is a discussion. Instead, I want specific answers presented as concisely as possible. In short, what's needed is a user manual that's as easy to understand as an airplane emergency card. Ubercart Tutorials for version 2 are availible and a new 3rd party site promotes Ubercart 3 and for videos for Commerce help.

Keep in mind that Commerce is a new package. So while it offers real promise, there's still a lot of work to be done. Payment gateways and shipping options are still very limited Meanwhile, for merchants with successful Ubercart stores who just want to migrate up to Drupal 7, Ubercart 3 may offer the path of least resistance.  But while the overall Ubercart system is somewhat easier to understand for casual users, merchants who've struggled with SKUs and inventory control may not find a solution in Ubercart 3.

From article by Mark Royko