Joomla 5 is the new long term release of Joomla. Surprisingly it was very easy to adjust VirtueMart 4 for Joomla 5. This was planned as the christmas release, but now it has become a Happy New Year release with some delay.

Project development through Membership

Sören, the founder of VirtueMart, helped me to update the entire infrastructure of the VirtueMart project (with Membership fundings). Our infrastructure, email server, svn, redmine, forum and our websites were quite outdated. So it was time to update everything. We now have a new redmine (web-based project management software) for and the forum and mail server have also been updated. I have been working on the latter for weeks to configure it with DMARC, SPF, DKIM, reverse DNS and so on. Finally, I moved all pages to the web host hetzner and updated all pages to Joomla 5, with the exception of Any of our pages are running now with the new template of Neoteric of VirtuePlanet, with extra customisations (with Membership fundings) 
But a new native BS5 template is already in the pipeline. If all goes well, we will soon have a new VirtueMart-native BS5 template that will be used as the new template for the core, on the demo and of course with Joomla 5! So we did a great step to ensure a great lifetime for the project (with Membership fundings).

Core testing

The testing team was really very active. PayPal Checkout was tested very thoroughly. The new plugin works now also in the old redirect mode, but with the new API. This means a merchant can provide his users the new way with the enhanced PayPal (Express) button, or the old way, just using the cart checkout button in the same cart. The new unbranded Alternative Payment options available for different countries are also very interesting in special for Europeans.

The core got updated for Joomla 5, of course it still needs the compatibility plugin. This was surprisingly easy. So I decided to use joomla 5 for new vm pages. Also updating a joomla 4 vm shop to joomla 5 is very easy (just check the languages!). Abhishek of VirtuePlanet donated code for minified css files and for the new child templates in joomla 5. Some shops run already since weeks on Joomla 5. Good Work Joomla!

GJC tested inheriting of parent properties and found a severe bug, which prevented that properties with _ were inherited, but this was only intended for the properties beginning with _.
Next important fix is in the cart, some redirects lead to the orderdone function. But this should be only done by the payment plugin. Only the plugin knows, if the payment was successfull

DOWNLOAD VirtueMart 4.2.6 with the Membership

Features and Fixes:

General core

  • Important fix for "private" values starting with _
  • Abhishek integrated children templates and new setPath function by Abhishek (VirtuePlanet), which works with the new child template and with minified files
  • Very important cart fix, never use the layout orderdone for redirects in the function checkoutData
  • new Feature "set Real Image Size" in the IMG tag directly. This helps lazy loading and prevents jumping of the images loading the page
  • Fix for overrides of layouts with BS prefix. All developers should prefer getBaseLayout over getLayout
  • enhanced message if membership server cannot be reached
  • Tools GDPR tab; removed deletion of files by mdate or cdate. If someone moves the files, then the dates are updated and so this idea does not work safely
  • GDPR- removing invoices needs at least 3 in years
  • Log view, added an option to download or to delete a file
  • Changed getInvoiceFolder system, so that we can work in future with folders per year. The last problem is to either write a fallback system or tool which copies the data or both
  • Put more invoice functions to the right place the model, proxy functions for BC are there.
  • Little fix to prevent strange calls to controllers
  • user model stores value block in admin
  • removed old db->getErrorMsg(), raiseError and so on
  • Enhanced the functions getPluginCustomData and getPluginProductDataCustom
  • Removed minors like "Deprecated: Creation of dynamic property is deprecated" or null not allowed
  • some minors, removed outdated code, added default value, etc
  • Updated links to docs


  • Enhanced installer script in j5 style for tcPDF by Stefan
  • Changed the "creator" and such stuff for tcpdf, should now work with given version (not VirtueMart 2 anylonger!)

Compatibility PHP8.x, Joomla 4/5

  • Multivariant radioboxes Javascript for Joomla 4
  • shopfunctions.php JPath::clean added check for empty
  • added joomla trigger to vmview onBeforeDisplay and onAfterDisplay
  • For Joomla 5, replaced uppercase Select with select
  • a try catch for getVarsToPushByXML (thx stAn)
  • JVM_VERSION works now also with version numbers with suffixes (-elts Version)
  • enhanced xml of modules for single installation (thx Stefan)
  • tcpdf.php, added if not empty and is array check, Small fixes for the install of TcPDF


  • increased size of authorizenet_response_account_number
  • PayPal Checkout, added PayPal developer mode to PayPal, which enables the sandbox
  • PayPal Checkout, enhanced form, added autocomplete off
  • PayPal Checkout, getPayPalAccessToken is only executed if the minimal data is available
  • PayPal Checkout, fixed return link if no button is used
  • PayPal Checkout, fixes to prevent js errors if no button is used
  • PayPal Checkout, checkout without button is more robust
  • PayPal Checkout, Unuseable products are greyed, but selectable
  • PayPal Checkout, replaced all cUrl against VmConnector::getHttp
  • PayPal Checkout, if capture is unsucessful block checkout
  • PayPal Checkout, admin js adjusted to grey out options on j4/j5
  • PayPal Checkout, changing login data overwrites it for all payments, sandbox is seperate
  • PayPal Checkout, message if you are already logged in

Important for developers and templaters

  • Fix for overrides of layouts with BS prefix. All developers should prefer function getBaseLayout over getLayout
  • add to cart works now also with given data as POST.
  • Given ordernumber of the cart is used for the order
  • $cart->couponCode to $cart->cartData['couponCode'], $cart->couponCode is for internal use of the cart. The reason is that we must check the coupon on any update. So the value in cartData is the entered coupon and the value of the cart is the selected coupon. To clear both values, we have a new function clearCoupon
  • removed confusing doubled virtuemart_product_id inputs. Check revision 10944 and compare it with your template.
  • Multivariants with children. Replaced the js to use data-cvsel instead of the class cvselection. Check your override sublayouts/customfield.php
  • Somehow the automaticSelectedShipment switched into the template and changes the rendering of a shipment plugin. This was also for payment plugin and already removed. Templaters pay attention to the new code, thank you ( I know it was this strange way for years)