January 9, 2008

VirtueMart: A virtual ecommerce solution

Author: Federico Kereki

If you run an ecommerce site, you may want a content management system (CMS) to help manage your online product line. VirtueMart, available under the GNU GPL and fully integrated with Joomla!, does that and more. It provides a full ecommerce solution in a LAMP environment.

VirtueMart has a long history, going back several years through different incarnations. Its oldest ancestor is phpShop, a PHP-powered, standalone shopping-cart application that's still in development. Then it became mambo-phpShop, a Mambo component, fully integrated within that CMS. VirtueMart finally got its current name in June 2005. Its current stable version is 1.0.13a, but version 1.1 is in beta.

Installing VirtueMart

I recently used VirtueMart to help a client (a local large hardware store) create an online store. The site had to display a product catalogue and price lists; we plan to add automated sales after gaining more experience. All shipping is local (all of my client's customers are in Uruguay), so the client didn't require the available advanced shipping-cost calculation modules.

Installing VirtueMart is a no-brainer if you've ever installed Joomla! and deployed any extra components for it. I had to fix a small problem with the Administration module, which logged me out every time I did a save. After that, everything worked fine. (The problem actually is in Joomla!, not in VirtueMart.) When installing components and modules, I included not only the basic packages but also practically every optional one, including:

  • Product Scroller: Randomly scrolls down different products. The effect is like a ticker tape that includes a product image, name, description, and price.
  • Latest Products: Shows recently added products.
  • Featured Products
  • Random Products
  • Categories: Shows a menu with all the categories you've set up. Clicking on a category shows its subcategories. You can change the format to a tree view.


For most of these modules, you can specify how many products will be shown, in what format they'll be shown (rows, columns, or a grid), whether prices should be shown, whether an "Add to cart" link should be shown, from which categories the products should be taken, and some minor styling details. Go to the Joomla! Administration page, click on Site Modules, and then click on the module you want to configure it.

Two potential useful modules I haven't yet set up are Your Cart and the system for electronic payment; with these two modules you can allow your clients to select articles and pay for them electronically.

My client needed VirtueMart to import the products data from the company's ERP system. Fortunately, VirtueMart has a good import function and can import a comma-separated values (CSV) file. We run a full data load once a week to keep prices updated, but the process takes just minutes for a few thousand articles. The people in charge of the printed catalogue had to scale down the size and resolution of most of the product images so the Web site wouldn't end up sluggish.

If you want to set up categories (and subcategories, and sub-subcategories, and so on), you can either do it by hand or include a special field with specific values. For example, TOOLS|GARDEN TOOLS|ELECTRICAL GARDEN TOOLS means that a specific product will be in the ELECTRICAL GARDEN TOOLS sub-subcategory of the GARDEN TOOLS subcategory of the TOOLS category. After we built the fields, the data upload process ran seamlessly. You can also include a product within several different categories. I took advantage of that by creating a subcategory for each brand, so customer can search for, say, all Stanley or Bahco tools.

Configuring VirtueMart

In Joomla!, components usually include administrative screens, and VirtueMart has a fair share of those. If you log in as the site administrator, you should be able to access the VirtueMart administration screen and go through the following options:

  • Global: These features let you choose whether you're going to use VirtueMart as a catalogue only, which users should be allowed to see prices, the local taxes, and more.
  • Site: These options include whether you want to include a PDF printout button, which template to use for products, the default sorting order for listings, and which orderings (such as name, price, and last update) to allow.
  • Store: Here you can fill in the store details, including its name, address, country, currency, and currency display rules (including the decimal point and thousands separator characters).

If you're going to use the full package, you should also look into the Shipping and Payment Methods parameters.

My client required that the software be in Spanish. VirtueMart chooses the appropriate language file automatically, according to whatever you set for Joomla!, but you have to download the appropriate language pack. Ready-made packages for several languages are available (check the Languages download directory). However, in the Spanish version, some words or sentences were either still in English or had been translated incorrectly. Fortunately, you can install the VirtueMart Language Manager component, which lets you finish or modify any translations. It gives you the original English sentence, and you replace it with your translation. I only had to fix some words here and there and solve some minor character-encoding problems.

For colors, fonts, and similar HTML-related matters, VirtueMart usually follows whichever template you install, so you get a Web site that looks consistent. However, some screens use somewhat different templates; if you need to edit them, you can find them in the Joomla! directory under administrator/components/com_virtuemart/html/templates. Of course you'll need some HTML and CSS knowledge to do that, and if you're like me, you'll have to get a graphic designer to decide what should be done!

If you need to set different prices for different clients, you can create "shopper groups" and assign each client to a group. You can then specify separate prices for each group; all clients in the same group will be offered the same prices. My client also required that only registered users be able to see product prices, and VirtueMart allows for that. You can also have prices in different currencies (here in Uruguay, you can usually find prices quoted both in pesos, the local currency, and US dollars). However, it seems that Virtuemart only displays prices in a single currency. I might be missing some required configuration setup; I'm still looking into that. You can also use "product attribute lists" so that customers can select extra features (at an extra cost), and the cart always shows the correct total price. VirtueMart also computes value added tax (VAT), so the DGI (the Uruguayan IRS) will be satisfied.

Overall, VirtueMart provides a solid, stable solution for those looking for open source ecommerce software that fully integrates with a CMS.


  • Internet & WWW
  • Business