With great sadness we have to announce that we are ceasing development of all our VirtueMart, WooCommerce and Joomla plugins. Effective immediately, all our plugins -- even those that were paid downloads -- are made available for free from our homepage (GPL license still applies), but we cannot and will not provide any support anymore.
It has been a great pleasure to be part of the thriving development communities of VirtueMart as well as WooCommerce. However, during the last year it became painstakingly clear that in addition to a full-time job, a young family and several other time-consuming hobbies at professional level (like being a professional singer) the plugin development and the support that it requires is not sustainable and is taking its toll. It has been an honor, but it is now time to say good bye!
John-Paul Briones also wrote a great tutorial about this plugin on webhostinghub.com!
The plugin is installed -- like any other Joomla and VirtueMart plugin -- in Joomla's extension manager. It will automatically be enabled upon installation.
After installation, the first thing to do is to create a custom field type in VirtueMart's administration backend.
Basically, a cart attributes is a product attribut where different values indicate slightly different product variations, possibly even with a different price. On the other hand, non-cart attributes are simply fields to convey additional information to the user, but do not cause the product to be different. This difference is also the cause why those two types of custom fields are handled completely different: cart attributes will be shown next to the product price in the product page, while non-cart attributes will be shown at the bottom of the product page (unless their position is explicitly set to "ontop"). Similarly, cart attributes need to be shown in the order view and the invoice, while non-cart attributes will never appear in the invoice or order (since they only convey additional information, but do not further define the product). Here is a quick overview of the effect of cart vs. non-cart attribute on the display of the custom field in the product details page and the invoices:
Cart attribute | Non-cart attribute | |
Product details page | -) displayed next to the price -) Displays "Price: No additional charge" unless explicitly disabled |
-) Displayed at the bottom of the product page |
Order view and Invoices | -) Displayed just below the product name | -) Not displayed at all |
To upload the files you want to sell as downloads, you need to prepare them as media files "for sale" or "for download" in the VirtueMart backend. The file title of the media file will be displayed as the link, the filename will be taken from the uploaded file.
It is of course possible to add multiple downloads (free and paid in any combination) to a product. Simply create multiple custom fields as described in this section. Each custom field can be configured separately, so you can have free downloads for all and downloads only after purchase attached to the same product. All your customers will be able to download the free downloads, while only those who purchased the product will have access to the paid downloads.
If the user is not authorized to download (e.g. because he did not yet purchase the paid download, or because he is not logged in for registered downloads), no link and no other indication is displayed at all.
If the user is authorized to download, all three types of downloads (free, registered and paid) look similar. The following screenshots display the download links (both in compact and in full format) on the product page, in the order view and on the invoice PDF.
This plugin also provides a page to display all downloads of all the user's orders, if the user is logged in, or the downloads of a given order for anonymous shoppers (order number and password needed). Simply use the URL
http://[BASE_URL_OF_VIRTUEMART]/index.php?option=com_virtuemart&view=plugin&name=downloads_for_sale
to display the downloads page. If the user is logged in, all available downloads from all his/her orders are displayed. If the user is not logged in, he can provide the order number and order password to get access to the downloads of one particular order:
Unfortunately, in Joomla it is not possible to directly add a menu item with an internal link to that address. You can, however, add a menu item of type "External URL". In the "Link" input box, simply use "index.php?option=com_virtuemart&view=plugin&name=downloads_for_sale"
By default, cart attribute custom fields are used to make small adjustments to products, like different sizes, and thus might imply different prices. So, by default VirtueMart always displays the additional cost implied by a cart attribute custom field, and even points it out if that additional cost is 0. To prevent this, go to the Virtuemart configuration, at "Configuration" -> "Configuration" -> Tab "Pricing". Make sure the two boxes for "Baseprice modifier" are unchecked.
The appearance of the download links can be styled using Joomla's template overrides. For a general description about overriding the templates of VirtueMart plugins, see http://docs.virtuemart.net/tutorials/templating-layouts/101-how-to-overwrite-plugins.html
There are four different html templates for the "Downloads for Sale" plugin, located in plugins/vmcustom/downloads_for_sale/downloads_for_sale/tmpl/:
To customize any of them, simply copy the corresponding file from the tmpl directory to the directory templates/[YOURTEMPLATE]/html/vmcustom/downloads_for_sale/ and modify its contents. Joomla (and thus VirtueMart) will first take files found in that directory, and only use the files in the plugin's directory if no template overrides are found.
Using a template override as described here is usually preferred over directly modifying the files in plugins/vmcustom/downloads_for_sale/downloads_for_sale/tmpl/, because template overrides will survive plugin updates.
Unfortunately, VirtueMart 2 currently does not have any way to indicate that a product does not need any delivery at all (like downloads, or sold coupons, or sold seminar attendances, or sold lessons, etc.). So, VirtueMart will always insist on having a shipping method, and will always display a link to change the shipping address.
There are, however, some workarounds to make non-delivery product a little less painful to the user:
Shop for non-delivery items only: If your shop only sells non-delivery items (e.g. downloads), then you can simply set up one shipping method called "Download" and zero shipping costs.
Shop with physical goods and non-delivery items: This case is more complicated, since VirtueMart needs to somehow determine whether only downloadable products are in the order. As mentioned, VirtueMart has no direct setting, so the only way is to abuse some other product property to distinguish downloadable files from non-downloadable files.
One suggested method is to use the weight: set the weight of all downloadable products to 0, and the weight of all other products to a value larger than zero. Then any order with "weight" 0 consists of only downloadable goods (and does not need any delivery), while any order with weight>0 contains at least one other item.
You can then set up two shipping methods, one "Download" method for weight 0 and one "normal shipping" for weight >0.
Notice that the last suggestions does not work if e.g. the shipping costs for non-download items depend on the weight, and you also offer products with a weight of practically zero (like a gift coupon or some certificate).
In this case, you can abuse other properties like length, width or height, and use a 3rd party shipping plugin like the "Shipping by Rules" or "Advanced Shipping by Rules" plugin.
Starting with version 1.8.1, this plugin uses the Joomla 3.x updater to install new versions. For this to work, you need to enter your updater credentials (order number and password of the purchase at open-tools.net) in the plugin configuration page (Joomla Backend: Extensions => Plugins):
The updater will then access the download at open-tools.net with these credentials, which unlock download access. If you enter invalid credentials, then the plugin will work just fine, only updates are not available:
Please note that the automatic update feature for paid plugins (that need some kind of password to unlock the download) is NOT available in Joomla 2.5!
2016-03-06: Version 1.8.2: Fix warning when saving the custom field (SQL)
2016-01-03: Version 1.8.1: Automatic updates through the Joomla updater
2015-04-24: Version 1.8: Fix table creation (VM3), warning in downloads page, order data available in templates
2015-01-05: Version 1.7: Fix some php warnings
2014-11-24: Version 1.6: Update to Joomla 3.x and Virtuemart 3.x
2013-11-15: Version 1.5.4: Fix problems with large files, also send file size in http header
2013-08-26: Version 1.5.3: Fix some translations due to changed VM internals
2013-05-24: Version 1.5.2: Allow downloads not to change order status; Fix error handling
2013-05-13: Version 1.5.1: Fix non-standard order statuses
2013-05-08: Version 1.5: Fix warnings; Allow free/registered downloads for orders that do not yet allow paid downloads
2013-04-24: Version 1.4 (Add configuration for downloadable order status, and status after download)
2013-03-14: Version 1.3 (Improved error messages if files is not available; renamed plugin)
2013-02-26: Version 1.2 (Support for Jooma 1.5, added German translation)
2013-02-24: Version 1.1 (Fixed some permission problems for unconfirmend orders)
2013-02-06: Version 1.0 (initial public release)