Skip to main content

68 templates now rebuilt for Joomla 5 + VirtueMart 4 on Bootstrap 5. See what changed

  • Change Log:
    • Release Date: 2026-10-31, Version: 5.4.10, Notes:

      Swift's first release as a Joomla 5 native template. The template has been rebuilt on Bootstrap 5 and the current Joomla API, its home page slideshow moved off an abandoned library, its Options screen made usable again, its phone and desktop forms reworked, and a large amount of dead weight taken out of the download. The template tree goes from 267 files to 229: 12 files added, 50 removed and 63 changed. Built against Joomla 5.4.10, VirtueMart 4.8.4 and PHP 8.3, with Bootstrap 5 throughout.

      Three changes stand out for anyone who has run this template before. The slideshow now runs on Swiper 11, bundled with the template, instead of the unmaintained camera.js; 26 JavaScript libraries and 6 stylesheets that nothing on the site ever loaded have been taken out, shrinking the js folder from 940 KB to 348 KB; and every text field on the login, registration, contact and account forms is back to the height and width the design intended, after Bootstrap 5 had squashed them to around 30 px.

      Added

      Favicon tool

      • A Favicon tab in the template's Options, with a media picker and an in-browser crop tool (fields/favicontool.php). It writes the icon into the page head along with an apple-touch-icon and a fallback, so a site no longer needs a hand-placed favicon.ico in the root. With thanks to Gianluca, whose favicon question inspired this tool.

      Colour pickers on the Options screen

      • All 43 colour settings now show a real colour picker with a live swatch. On Joomla 5 every one of them rendered as an empty text box, so changing a colour meant knowing its hex code and typing it correctly.
      • The picker ships with the template (css/coloris.min.css, js/coloris.min.js, fields/colorpicker.php). Nothing is fetched from an outside site. The Joomla 3-era jscolor library it used to rely on never loaded under Joomla 5 and has been retired, along with the utils/js_colourchanger/ folder that only it referred to.
      • With Joomla's own colour field gone, the older admin scripts that had been getting jQuery from it as a side effect started failing with jQuery is not defined. The template now declares that dependency itself rather than relying on a coincidence.

      A Checkout button in the cart panel

      • The header cart panel offered only "Show Cart". Once the cart has something in it, it now offers Check Out Now as well, so a customer can go straight to checkout from the panel.

      Show and hide on every password field

      • Login, registration and account forms have an eye icon that reveals what you have typed (js/cs-password-eyeball.js).

      Bootstrap 5 compatibility layer

      • css/bs2-bs5-bridge.css, the shared stylesheet that lets a Bootstrap 2 era layout render correctly on Bootstrap 5. This template carries revision 2026-10-24.163 with 26 template-specific blocks on top of it.
      • js/cs-mobile-generic.js for the phone header, drawer and panels, and js/cs-jq-compat.js, a small shim that restores two pieces of jQuery that older donor code still calls and that the jQuery shipped with Joomla 5 no longer provides.

      Changed

      Joomla 5 native throughout

      • Every removed Joomla 3 class alias is gone from the template: JFactory, JText, JHtml, JError, JRoute, JUri and the rest are now the namespaced Joomla 4+ API, across index.php, component.php, error.php and the VirtueMart and Joomla override files - 52 of the template's 75 overrides were touched. An audit of the shipped tree finds none remaining, down from 176. These aliases only ever worked while Joomla's Behaviour - Backward Compatibility plugin was enabled.
      • The template's own on/off settings now use Joomla 5 native switches. They were Joomla 3 era checkbox markup that Joomla 5 rendered inconsistently; none of the old style remains anywhere in the manifest.
      • Form validation uses the current Joomla asset instead of the removed behavior.formvalidation, which silently stopped validating anything on Joomla 4 and later. With thanks to Zoltán Szász for reporting this.
      • The Bootstrap 2 login pop-up has been converted to a Bootstrap 5 modal, including its close button, and the hand-written jQuery that used to race Bootstrap for control of it has gone.

      The home page slideshow now runs on Swiper 11

      • camera.js, the library the slideshow was built on, has not been maintained for years and depends on parts of jQuery that Joomla no longer ships. The slideshow now runs on Swiper 11, and Swiper is bundled with the template (js/vendor/swiper/) rather than fetched from an outside content network, so the template does not depend on another host to work.
      • It keeps behaving the way your settings say: transition speed, auto-advance and its delay, the pagination dots and the prev/next arrows are all still read from the template's existing slideshow settings, so a configured site keeps its configuration.
      • Please note one deliberate difference. camera.js sized the slideshow from each image's own proportions; Swiper sizes it from the slideshow height in the template's settings. Where those disagree the slideshow is now the configured height rather than the image's.
      • Two slideshow settings have been retired with the move: the two colours that tinted camera.js's own loading spinner, which Swiper has no equivalent for and nothing in the template read any more.

      Icons and fonts

      • Font Awesome 6.5.2 with the version 4 compatibility shims, so the template's existing icon names keep working.
      • A duplicate icon library has been dropped. The page head carried a second Font Awesome - version 5.0.1, fetched from an outside content network - on top of the one the template actually uses. Nothing needed it.
      • The Options screen was loading its own icons from MaxCDN, which has since shut down, so those icons returned a 404 on every load. It now uses the current icon set. The shipped template no longer contacts any outside content network.
      • The Google web font loader that ran as JavaScript has been replaced by an ordinary stylesheet link with preconnect hints, so fonts no longer wait on a script to be fetched and parsed first.
      • The social links cover 13 networks. X, Instagram, Threads, Bluesky, Mastodon, YouTube, TikTok, Pinterest and Discord are in; Google+, MySpace, StumbleUpon, Digg and Blogger, all long gone, have been retired.

      Stylesheets reach visitors after an update

      • The template's stylesheets and scripts were served with no version marker, so a browser kept showing its cached copy after an update until the visitor cleared it by hand. The local ones now carry one, taken from the file's own modification time.

      Standalone install defaults

      • A fresh install of the template now links the logo to the home page and has the slideshow switched on. These were correct on our demo but off in the package, so a new install did not look like the demo it was chosen from.

      Fixed

      Pages that did not work

      • Every error page was served as a blank 500. error.php called JError::raiseWarning(), a Joomla 3 class that no longer exists, so the error page itself crashed while trying to render. A visitor who hit a missing page got a server error instead of the template's 404. The file has been converted to the current API and now renders properly.
      • Stylesheet requests for files that are not in the template. The print stylesheet imported three Bootstrap files from media/jui/, a folder Joomla 4 removed. Browsers fetch print stylesheets and their imports anyway, so each one returned the site's "page not found" response on every single page load. They are gone, along with the other links to stylesheets that no longer exist.
      • Two layout tests that could never be true. The template asked whether either of two module positions had content using a Joomla 3 form of the test that Joomla 4 and later read as a single position name with spaces in it - so the answer was always no, and the areas those tests guarded could never appear.

      Phones and tablets

      • The phone slideshow showed a cropped middle strip of each banner. The slide wording is part of the image, and at 375 px a 1120×420 banner was being shown as a fixed-height crop: only "…SPRING SALE" was visible, cut off at the left edge, with the product gone entirely. Phones now show the whole banner.
      • Phones use the full screen width, with no grey gutters down the sides, and text kept a comfortable 20 px from the edge instead of 5 px.
      • Page titles were indented further than everything else on the page. They now share the template's single side margin rather than sitting 12 px further in.
      • The menu button was a transparent outline beside a row of filled buttons, and sat 5 px below the logo's centre line. It now carries the template's own colour like the buttons next to it, and lines up with the logo at every width from 320 px up.
      • Opening a phone panel no longer dims the logo and the menu button at the top of the page.
      • The VirtueMart category menu's subcategories open on phones again.
      • The page cannot be panned sideways at any width down to 320 px.

      Forms

      • Every text field on the login, registration, contact, password-reset and account forms was about 30 px tall, against the 50 px of the original design. All of them are 50 px again.
      • The login box's two fields were different widths - the password field ran to 771 px beside a 462 px username. They now match.
      • In the cart's address form, the required fields were narrower than the optional ones beside them, 228 px against 380 px, because a Joomla 3 contact-form rule in the template was still sizing anything marked required. All twelve fields are now the same width, at both desktop and phone sizes.
      • The registration and account forms drew a horizontal line above and below every row, from table-cell borders applied to the form's layout.
      • The "Ask a question" form did the same, and that pop-up now opens at its full size with the form fitting inside it: labels on one line, fields within the pop-up, and the Send button no longer overlapping the character count.

      VirtueMart

      • The cart panel's Checkout button did not read as a button at all, and its hover was imperceptible. It is now a solid button that clearly changes on hover and on touch.
      • The "added to your cart" pop-up is sized to read properly, with its two links as real buttons. It used to be either narrower than its own text or wider than the screen.
      • The account page's login row ran "Remember me" into the Login button. The row's cells were touching; they now sit on one centre line with proper gaps.
      • The two Sort by controls on a category page did not match each other - one was 38 px at 16 px text, the other 21 px at 12 px. Both are now the same size.
      • The quantity box was shorter than the minus and plus buttons either side of it, 34 px against 40 px. It fills the bar now.
      • Product rows could collapse to a few pixels tall, letting the content below overlap the product tiles.
      • The cart address page fataled on PHP 8 when a user had no stored address fields, from a count() call on an empty value inherited from an older VirtueMart view.

      The print view and VirtueMart's pop-ups

      • component.php - the layout Joomla uses for the print view, and VirtueMart for its pop-up windows - and error.php were still carrying the template's pre-Joomla-5 head: Bootstrap 2, no compatibility layer, and links to stylesheets that no longer exist. Both now load the same current stack as the main page, in the right order, so the pop-ups use the template's colours rather than Bootstrap's blue.

      The Options screen in the administrator

      • Joomla's guided tour hijacked the administrator. Joomla 5.4 ships a "what's new" tour set to start by itself and point at the dashboard, which sent every administrator request there. It no longer starts on its own.
      • The Details panel was unreadable in the dark admin theme - it shipped a hardcoded light treatment, grey text with a white shadow. It now follows whichever admin theme you have selected.
      • One leftover template style in the sample data belonged to a template not included with this product. Selecting it would have broken the site's appearance.

      Carried over from a customer report

      • The search icon font was loaded from media/jui/, a folder Joomla 4 removed, giving four 404s per page and a stray character in place of the icon.
      • Pagination arrows rendered as empty squares, because Joomla 4 and later emit icon names the template's icon stylesheet did not know.
      • Tall single-column intro articles in the featured view were clipped to their title.
      • The search button was detached from its input box by a global button margin.
      • With thanks to Michael Mullan, whose Expression bug report led to this maintenance pass across our templates.

      Removed

      26 JavaScript libraries and 6 stylesheets nothing loaded

      • The js folder has gone from 940 KB to 348 KB. Removed: jquery-1.8.1.min.js - a second, decade-old copy of jQuery - plus jquery.nicescroll.min.js, camera.js, camera.min.js, slick.min.js, iscroll.js, dropkick.js, jquery.dropkick-1.0.0.js, bootstrap.min.js, owl.carousel.min.js, jquery.selectric.js, flexibility.js, jquery.mobile.customized.min.js, jquery.stellar.min.js, jquery.plusanchor.js, jquery.easing.1.3.js, scrollReveal.min.js, selectivizr-min.js, modernizr.js, jquery.equalHeights.js, jquery.backstretch.min.js, superfish.js, supersubs.js, imgSizer.js, jquery-eu-cookie-law-popup.js and jquery.noConflict.js. With them went css/ie.css, css/ie6.css, css/ie9-10.css, css/reset.css, css/responsive.css and css/slideshow.css.
      • Every one was decided by what the template actually loads, not by its name: each <script> tag and each addScript call in the template's PHP was read, and the requests made by the rendered home, category, product, cart, login, account, search, contact and error pages were recorded at desktop and phone widths. Nothing on the site asked for any of them. Two drop-down plugins, two menu plugins, three carousels and the retired slideshow library were all shipping unused.

      The bundled Bootstrap 2 stylesheets

      • The whole css/bootstrap/ folder - bootstrap.css, bootstrap.min.css, bootstrap-responsive.css, bootstrap-responsive.min.css, bootstrap-rtl.css, bootstrap-extended.css and bootstrap-tooltip-extended.css. The template is on Bootstrap 5 now and none of these were being loaded.

      MooTools-era leftovers

      • js/tipz.js, html/modules.php and the two html/layouts/chromes/toggleModule overrides, which between them were the template's last code written against MooTools - a framework Joomla stopped shipping at version 4.

      Other

      • html/layouts.zip, an archive file sitting inside the shipped template tree.
      • utils/admin-js.js and the utils/js_colourchanger/ folder - a script and its five image and library files, used only by the retired jscolor picker.
      • Two third-party VirtueMart demo templates, horme_3 and vmbeez3, that are not part of this product and were bundled in the quickstart. Both also had broken error pages of their own, so activating either produced a 500 instead of an error page.
      • Two dead VirtueMart 3 payment plugins that VirtueMart 4 no longer ships at all. The update their presence advertised could never be installed by any route.
      • Settings the template declared but no longer read, so nothing in the Options screen pretends to control something that cannot change.

      Security

      • Template settings are escaped for where they land - page text, an attribute, a CSS value, a CSS url(), or a JavaScript string - so a value typed into the Options screen cannot break out into the page. The shipped tree carries 151 of these escaping calls where it previously had none, and an audit finds no unescaped output points left apart from the two settings documented as holding custom code.
      • The handful of settings that are meant to contain markup - the heading titles this template family documents as accepting it - are passed through Joomla's HTML filter instead, which still strips scripts, styles, iframes and event handlers.
      • The site name and slogan printed into image alt attributes went through a filter that removes tags but not quotation marks. They are quote-escaped now.
      • The removed Joomla 3 API calls matter here too: a template that fatals in error.php cannot show a controlled error page, and what a server shows instead is outside the template's control.
      • The template no longer contacts any outside content network while rendering a page. The duplicate Font Awesome, the MaxCDN icon link, the Google font loader script and the slideshow library's content network have all gone.

      Quickstart

      • Built on Joomla 5.4.10 with VirtueMart 4.8.4, replacing the Akeeba .jpa and Kickstart pair the previous download used. It installs like an ordinary Joomla site, with no extra restore tool to run first.
      • It arrives as a clean install rather than a copy of our demo: article hit counters at zero - they carried 46,931 views across 69 articles - product and category counters at zero, and no leftover user, session or order rows.
      • The administrator shows only Joomla's own five feature introductions, not the sixteen postinstall messages the demo had accumulated.
      • The template list is the canonical four and nothing else - Cassiopeia, Swift, Atum and the VirtueMart administrator template - with the donor's spare templates removed along with their database rows, so Joomla does not list a template that is not there.
      • The update sites it ships with have been cleaned: two had stray whitespace inside their URLs, one still contained unreplaced build placeholders, and the duplicates have been disabled so the Update Manager does not list the same item twice.
      • The mail-from address and sender name match the live demo rather than Joomla's installer defaults.

      Package

      • The standalone template package installs on Joomla 5 and is built from the same tree as the quickstart. It is a proper Joomla package with its own manifest, so Joomla can install it over an existing copy as an update.
      • templateDetails.xml carries a single semantic version. The previous download identified itself with a combined date-and-version string, 18.08.2025 5.3.0/4.4.4, which Joomla cannot compare for updates.
      • The version shown on the template's own Options screen, the version in the manifest and the version in this changelog are now written from one source at build time, so they cannot drift apart.
      • The copyright line is a real copyright statement rather than a bare link, and the author URL is https.
    • Release Date: 2025-08-18, Version: 18.08.2025 5.3.0/4.4.4, Notes:
      • Upgraded - Now compatible Joomla 5
      • Upgraded - Now compatible Virtuemart 4.4.4
      • Fixed - Minor bugs
    • Release Date: 2024-11-29, Version: 29.11.2024 5.1.2/4.2.12, Notes:
      • Fixed - Minor bugs with cart
    • Release Date: 2024-08-15, Version: 14.08.2024 5.1.2/4.2.12, Notes:
      • Upgraded - Now compatible Joomla 5
      • Upgraded - Now compatible VirtueMart 4.2.12
      • Fixed - Minor bugs
    • Release Date: 2024-05-07, Version: 07/05/2024 4.4.4/4.2.0, Notes:
      • Fixed - Template updated to be compatible with Joomla 4.4.4
    • Release Date: 2023-06-30, Version: 26.06.2023 4.3.0/4.0.13, Notes:
      • Fixed - VirtueMart Products Module bug
      • Fixed - Double ReCaptcha on VirtueMart Registration page
      • Fixed - Template toggle button not displaying
    • Release Date: 2023-06-27, Version: 26.06.2023 4.3.0/4.0.13, Notes:
      • Fixed - Menu Params error for adding in image on menu
    • Release Date: 2023-05-20, Version: 20.05.2023 4.3.0/4.0.12, Notes:
      • Fixed - Template updated to be compatible with Joomla 4.3
    • Release Date: 2022-09-09, Version: 09.09.2022 3.10.11/4.0.6, Notes:
      • Fixed - Joomla 3.10.11
      • Fixed - Template updated for PHP 8.0