Flexo Virtuemart Template Changelog
- Change Log:
- Release Date:
2026-10-19, Version:
5.4.10.2, Notes:
Security. The template's menu layouts printed a menu item's note and link exactly as entered, so markup typed into a menu item's Note or Link field reached the page. Both are now escaped, as Joomla's own menu layouts do.
Colours with transparency. A colour chosen with the colour picker's opacity slider (saved as an 8-digit colour such as
#rrggbbaa) was replaced with black. Colours with transparency are now used as chosen. - Release Date:
2026-10-19, Version:
5.4.10.1, Notes:
VirtueMart login page. The VirtueMart login page, which shoppers who are not logged in reach from the cart and account links, returned a server error on Joomla 5. The template's login override used
JDispatcher, a Joomla 3 class that Joomla 5 no longer has; it now uses Joomla's own event call.Page language. The page had no opening
<html>tag, so browsers, screen readers and search engines were not told the page's language or text direction. It now declares both from the site's language settings.Printing. Printed pages lost the template's print styling: a leftover line at the top of
css/print.cssstopped browsers reading the stylesheets it imports. - Release Date:
2026-10-19, Version:
5.4.10, Notes:
First Joomla 5 native release. Flexo has been brought forward from the previous download (
18.08.2025 5.3.0/4.4.4) to Joomla 5.4.10 + VirtueMart 4.8.4 + Bootstrap 5. Flexo keeps its own Bootstrap 2 layout classes and renders on Joomla 5’s Bootstrap 5 through a compatibility stylesheet, so existing module and article markup keeps its layout. This release adds a full phone layout, a real colour picker for every colour setting, a favicon tool and current social networks. Every Joomla 3 API call has been replaced, and every template setting written into the page is now escaped. Across the template, 19 files were added, 12 removed and 66 modified (341 → 348 files). The template version now matches the Joomla version it ships with.Added
Bootstrap 5 compatibility layer
- New
css/bs2-bs5-bridge.css: maps Flexo’s Bootstrap 2 grid (.row-fluid,.spanN, offsets,hidden-phone/visible-phoneutilities, button and form classes, modal shell) onto Joomla 5’s bundled Bootstrap 5. It is loaded as the last stylesheet in the head, with a file-time version marker, so it sits in the right place in the cascade. - The bridge includes the Bootstrap 2 phone body gutter, block-level
.nav > li > aanchors, and icons for the VirtueMart cart’s update-quantity and remove buttons (Font Awesome 6 glyphs in the cell’s own text colour). - New
js/cs-jq-compat.js: restores three jQuery 1.x calls that Joomla 5’s jQuery 3 removed but the bundled slideshow, parallax and carousel scripts still use (.live(),.offset()on the window, and.load(fn)as a load-event shortcut).
Phone layout
- New
js/cs-mobile-generic.js: on phones (up to 767 px) Flexo gets a compact header with a menu button that opens a slide-out menu built from the site’s menus. - A phone toolbar under the header with six 44×44 px buttons: Section menu (opens the shop categories), Log in, Register, Search, Follow us (the social links) and Cart. The toolbar runs the full width of the screen.
- The VirtueMart category menu opens its subcategories with the arrow on phones.
- The cart opens as a panel centred on the screen. The cart icon shows how many items are in the cart, on phones and on desktop, and updates when VirtueMart refreshes the cart.
- The cart panel, the login form and open dialogs close when you tap outside them.
- The phone search box uses a 16 px font and a 44 px height, so iPhones do not zoom the page when you tap into it.
- On account pages (login, registration, password reset, VirtueMart account), phones show the page content first, with only the breadcrumbs and store menu above it.
- On phones, the header, slideshow, information band and footer run edge to edge, while text and product cards keep a 20 px side margin (
cs-no-bs2-gutterbody class plus a Flexo-specific inset block). The page cannot be pushed sideways.
Password show/hide
- New
js/cs-password-eyeball.js: every password field (login module, login page, registration and account forms) gets an eye button that shows or hides what you have typed. On phones it sits beside the field.
Own error pages
- “Page not found” (404) and “access denied” (403) pages are now shown inside the template, with its header, menus, phone toolbar and footer, instead of Joomla’s bare error page. They fit a phone screen.
Colour picker
- New custom field
fields/colorpicker.phpwith the bundled Coloris picker (js/coloris.min.js,css/coloris.min.css). All 70 colour settings are nowtype="colorpicker", with a live swatch and a picker that ships with the template (nothing is loaded from an outside site). - New
fields/adminui.php: loads the Options screen’s support scripts, declares the jQuery framework they need, and makes the template’s Details panel follow Joomla’s light or dark admin theme.
Favicon tool
- New Favicon tab (fieldset
faviconsettings) with a media field (favicon) and a favicon tool (fields/favicontool.php) that builds the favicon set from one image. With thanks to Gianluca, whose favicon question inspired this tool. index.phpoutputs the favicon links through two new helpers,phFaviconSet()andphIcoBytes().- 10 new language strings in
en-GB.tpl_flexo.ini(73 → 83), e.g.TPL_FLEXO_FAVICON_TAB,TPL_FLEXO_FAVICON_LABEL,TPL_FLEXO_FAVICONTOOL_CREATE.
Modern social network support
- Eight new social services, each with an on/off switch and a URL field: Instagram, YouTube, Pinterest, Threads, TikTok, Bluesky, Mastodon, Discord (fields
instagram/instagramON…discord/discordON). - Matching icon images ship in
images/:instagram.png,youtube.png,pinterest.png,threads.png,tiktok.png,bluesky.png,mastodon.png,discord.png,x.png.
Security helpers
- 13 new helper functions in
index.php:phEsc(),phHexColor(),phCssDim(),phCssNum(),phCssFont(),phCssSelector(),phCssToken(),phCssUrl(),phJsStr(),phJsLit(),phRichText(),phFaviconSet(),phIcoBytes(). They are used at 204 call sites. Details under Security.
Changed
Joomla 5 platform
- Built for Joomla 5.4.10 and VirtueMart 4.8.4 (previous demo stack: VirtueMart 4.6.8).
- The template renders on Joomla 5’s bundled Bootstrap 5 (
/media/vendor/bootstrap/, plusbootstrap.rtl.min.cssfor right-to-left sites) throughcss/bs2-bs5-bridge.css. - The print view and VirtueMart pop-up windows (
component.php, used for “Ask a question”, print and similar) and the error page (error.php) now load the same Bootstrap 5 base and bridge as the main layout. Before, they still loaded the original Bootstrap 2 head and stylesheets that no longer exist. - Dialogs (login, social and VirtueMart pop-ups) use Bootstrap 5’s
data-bs-toggle/data-bs-target/data-bs-dismissattributes (data-bs-*7 → 14). templateDetails.xmlversion18.08.2025 5.3.0/4.4.4→5.4.10;method="upgrade"kept, so an existing install updates in place.
J3 → J5 API migration
- All 218 Joomla 3 static calls removed (
JFactory→Factory,JText→Text,JHtml→HTMLHelper,JRoute→Route,JUri→Uri,JError::raiseWarning()→throw new \Exception(), and the rest). These aliases exist only while Joomla’s Behaviour – Backward Compatibility plugin is enabled. - Template overrides converted (calls before → after):
html/mod_login/default.php20 → 0,default_logout.php6 → 0.html/com_virtuemart/productdetails/default.php16 → 0, plusdefault_addtocart.php3,default_images.php4,default_reviews.php4,default_customfields.php1,default_showcategory.php1 → 0.html/mod_virtuemart_product/single.php15 → 0,default.php7 → 0.html/com_virtuemart/user/login.php14 → 0,edit_address.php6,bs3-edit_address.php5,bs3-edit_vendor.php4,edit.php3,bs3-edit.php3,edit_orderlist.php3,mail_raw_regvendor.php3,edit_vendor.php2,bs3-edit_shopper.php1,bs3-edit_address_userfields.php1,mail_html_reguser.php1,mail_raw_reguser.php1 → 0.html/com_virtuemart/virtuemart/default_products.php9 → 0,default.php1,default_categories.php1 → 0.html/com_virtuemart/category/default.php8 → 0,categories.php1 → 0.html/com_virtuemart/cart/default_shopperform.php6 → 0,default_pricelist.php5,default_coupon.php1 → 0.html/com_virtuemart/askquestion/form.php3,bs3-form.php3,mail_html_question.php2 → 0.html/mod_articles_latest/default_items.php6 → 0;html/mod_menu/default.php2;html/mod_virtuemart_currencies/default.php2;html/mod_breadcrumbs/default.php,html/mod_search/default.php,html/mod_virtuemart_cart/default.php1 each → 0.
- In all, 55 of the 81 PHP overrides under
html/were modified.
Template Options screen
- 105 field type changes in
templateDetails.xml. The 40 legacyclass="switch"checkboxes are gone; settings such asRSSON,H1TitleImgText,cam_autoAdvance,cam_hoverandcam_navigationnow use Joomla’s native on/off switchers (43 in all). The 70 colour settings (e.g.cam_loaderColor,cam_loaderBgColor) changed fromtexttocolorpicker. - Fields 174 → 183, fieldsets 9 → 10. Tab names no longer end in “Settings”.
- The Options screen’s icon font now uses Font Awesome 6.5.2 + v4 shims instead of Font Awesome 4.6.3 from the shut-down MaxCDN (
maxcdn1 → 0). The panel’sfa fa-*icons keep working through the shims.
Fonts and icons
- The Google Fonts
WebFontConfigJavaScript loader is replaced by a direct font stylesheet link (WebFontConfig1 → 0;webfont.jsno longer loaded). - The front end loads Font Awesome 6.5.2 (
all.min.css) withv4-shims.min.css, so the template’s existingfa fa-*markup keeps working.
Menus, background and selects without old jQuery plug-ins
- Drop-down menus open on hover without the Superfish/Supersubs plug-ins.
- Background images are sized with CSS
background-size: coverinstead of Backstretch. - Select boxes are plain HTML selects instead of DropKick.
- None of these scripts is loaded any more. jQuery itself still loads for the slideshow and carousels.
Store behaviour
- In the VirtueMart product modules, a product that has options such as size or colour now shows a Product details button that opens its page, where the option is chosen.
html/mod_virtuemart_product/single.phproutes the button through the newcs_vm_module_cart_button(). Products without options keep their Add to Cart button. - Article Previous and Next buttons sit at opposite ends of the article.
Stylesheets
- Every local stylesheet link carries a version marker, so style changes show straight after an update instead of waiting for visitors’ browser caches to expire.
css/print.cssandcss/template.cssupdated for Joomla 5.
Fixed
- Every “page not found” returned a server error when Joomla’s backward-compatibility plugin was off.
error.phpusedJError::raiseWarning()andJText; it now uses the Joomla 4+ API. - The VirtueMart login form could stop with “behavior::formvalidation not found”. The Joomla 3
behavior.formvalidationcall in the VirtueMart login override is now the Joomla 5behavior.formvalidator(1 → 0). With thanks to Zoltán Szász, whose report found it. - The address form could fail on PHP 8.
html/com_virtuemart/user/bs3-edit_address.phpcalledcount($this->userFields['functions'])on a value that can be empty; it now uses!empty(). Also thanks to Zoltán Szász. - The account page showed an error for store owners and vendors.
HTMLHelper::_('Select.…')/JHtml::_('Select.…')with a capital S cannot be resolved by Joomla 5. Fixed inhtml/com_virtuemart/cart/default_shopperform.php,user/edit_vendor.phpanduser/bs3-edit_vendor.php. - A product module’s Add to Cart put every size of a product in the cart. The old module override built its form from
customfieldsCart, which VirtueMart 4 never fills, so no option was sent. Fixed inhtml/mod_virtuemart_product/single.php(see Store behaviour). - The colour settings were plain text boxes on Joomla 5: the jscolor loader never ran, so a colour could only be changed by typing its hex code. All 70 now have the colour picker.
- The Options screen requested files that no longer existed: the jscolor script and the MaxCDN Font Awesome stylesheet.
- The template’s Details panel was unreadable in the dark admin theme (grey text with a white shadow). It now follows the selected admin theme.
- Stylesheet requests for files that no longer exist on every page load were removed. These included the 3
@imports ofmedia/jui/css/bootstrap*.cssincss/print.css, which Joomla 4 removed. - Cart page: the update-quantity and remove buttons were blank boxes, because they used the Joomla 3
media/juiGlyphicons sprite. They now show icons in a readable colour. - Fixes from a maintenance pass across our templates:
- The
@font-facepointing at the removedmedia/jui/fonts/IcoMoon font is disabled; it returned a 404 on every page. - Featured-article intro text is no longer clipped to its title (
.blog-featured .blog-item). - The search button sits flush with its search box again (
#search-position .btn).
- The
Removed
Legacy scripts and stylesheets no longer loaded
- Scripts:
superfish.js,supersubs.js,jquery.backstretch.min.js,jquery.dropkick-1.0.0.js,jquery.mobile.customized.min.js,modernizr.js,selectivizr-min.js,html5.js,webfont.js. The files remain injs/but nothing loads them. - Stylesheets:
all.css,bootstrap-extended.css,reset.css,style-error.css, and the Internet Explorer filesie.css,ie6.css,ie9-10.csswith their conditional comments.
MooTools and dead module chromes
- All MooTools
addEventcalls removed (4 → 0), with the files that carried them:html/modules.php(Joomla 5 has nomodChrome_code path),html/layouts/chromes/-toggleModule.phpand-toggleModule2.php.
Old colour picker and admin script
utils/js_colourchanger/(jscolor.js,arrow.gif,cross.gif,hs.png,hv.png) and thecolours_handlersfield that loaded it.utils/admin-js.js, a Joomla 3 admin script.
Unused files
html/mod_k2_content/Slider/default.phpand itsindex.html(an override for K2, which the template does not use).html/mod_menu.zip, an archive left inside the overrides folder.
Retired social services
- Five social slots removed with their switches: Google+ (
gplus), StumbleUpon, Digg, MySpace, Blogger.
Security
- Every template setting written into the page is escaped for where it appears, through the new helpers (204 call sites):
phEsc()for HTML text and attributes.phHexColor()for colours.phCssDim(),phCssNum(),phCssFont(),phCssToken(),phCssSelector()andphCssUrl()for values inside inline<style>.phJsStr()andphJsLit()for values inside inline JavaScript.
- Site-title fields (
H1Title/H2Title) go throughphRichText(): formatting markup is kept, but scripts, styles, iframes andon*event handlers are stripped. - Image
alttext built withstrip_tags()did not escape quotes; the 3 occurrences inindex.phpare now escaped. - The error page escapes the error message it prints.
- Module, menu and tab titles are escaped in
index.phpand the overrides.htmlspecialchars/escape calls across the template rose from 47 to 86, includingmod_login,mod_articles_latest,mod_menu,mod_breadcrumbs,mod_virtuemart_cart, thecom_contentblog, featured and archive views, and theslidesandvmdefaultmodule chromes.
Quickstart Installer
The Quickstart is a complete Joomla 5.4.10 site with VirtueMart 4.8.4 and Flexo installed as the active template, with the demo content.
- Bundled extensions: Joomla 5.4.10, VirtueMart 4.8.4, MCP For J 2.8.3, Akeeba Backup 10.4.0, Weblinks 5.2.0.
- Only the templates the site uses are included: the
templates/folder holdscassiopeia,flexoandsystem. VirtueMart’s demo templatesvmbasic,horme_3andvmbeez3are gone;horme_3andvmbeez3carried error pages that returned a server error. - Joomla 5.4’s “What’s New” guided tour (tour 15) no longer starts by itself (
autostart = 0). Before, it sent every administrator link to the dashboard on a fresh install. - Joomla’s Statistics plugin is set to never send data.
- A clean starting state: the action log is empty, the post-install messages are trimmed to the five worth keeping, and the template overrides are marked as reviewed (no “changes found” warning).
Package format
- Standalone template: Flexo now installs as a Joomla package (
pkg_flexo.xml) that installs and registers theflexotemplate extension. It declaresmethod="upgrade", so an existing Flexo updates in place, and<blockChildUninstall>true</blockChildUninstall>, so the template is removed through the package rather than on its own. - Quickstart bundle: a complete Joomla 5.4.10 install with VirtueMart 4.8.4 and Flexo pre-loaded as the active template.
Version numbering: from this release the first three digits of Flexo’s version match the Joomla release it is built for (5.4.10 = Joomla 5.4.10). A later fix on the same Joomla release adds a fourth digit (5.4.10.1). The previous download was versioned18.08.2025 5.3.0/4.4.4. - New
- 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-16, Version:
16.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-01-18, Version:
18.01.2024 4.3.4/4.2.0, Notes:
- Fixed - Minor bugs
- Release Date:
2023-12-18, Version:
07.12.2023 4.3.4/4.2.0, Notes:
- Fixed - Minor bugs
- Release Date:
2023-09-15, Version:
15.09.2023 4.3.0/4.0.13, Notes:
- Fixed - Template is compatible wiith PHP 8.2
- Fixed - Template updated to be compatible with Joomla 4.3.4
- Fixed - Template updated to be compatible with Virtuemart 4.2.0
- 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-23, Version:
16.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
- Release Date:
2026-10-19, Version:
5.4.10.2, Notes: