Flat Store 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-16, Version:
5.4.10, Notes:
First Joomla 5 native release. Flat Store has been brought forward from the previous download (
18.08.2025 5.3.0/4.4.4, built for VirtueMart 4.4.4) to Joomla 5.4.10 + VirtueMart 4.8.4 + PHP 8 + Bootstrap 5. Flat Store 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; the template’s own copy of Bootstrap 2 is gone. jQuery still loads for the camera slideshow, while the old jQuery menu, background and select plug-ins and the Internet Explorer polyfills are no longer loaded. This release adds a full phone layout, a real colour picker for all 90 colour settings, Joomla’s own on/off switches, a favicon tool, current social networks and its own 404 page. Joomla 3 class calls have been replaced throughout, and every template setting written into the page is now escaped. Compared with the previous download: 295 → 289 files, 10 added, 16 removed, 61 modified. The template version is now 5.4.10, matching the Joomla version it ships with.Added
Bootstrap 5 compatibility layer
- New
css/bs2-bs5-bridge.css: maps Flat Store’s Bootstrap 2 grid (.row-fluid,.spanN, offsets, thehidden-phone/visible-phone/-tablet/-desktoputilities, tab panes, button and form classes, the dialog shell) onto Joomla 5’s bundled Bootstrap 5. Its grid rules carry zero specificity, so Flat Store’s owntemplate.cssstill overrides them as it did Bootstrap 2 (for example the five-across product rows). - It is loaded as the last stylesheet in the page head (one
<link>before</head>, with a file-time version marker), so it sits above the template’s own CSS in the cascade. - New
js/cs-jq-compat.js: restores four jQuery 1.x calls that Joomla 5’s jQuery 3 removed ($.browser,.live(),.offset()on the window and.load(fn)as a load-event shortcut). The bundled camera slideshow reads$.browserand binds its controls with.live().
Phone layout
- New
js/cs-mobile-generic.js: on phones (up to 767 px) Flat Store gets a compact header, logo with the slogan beside it, and 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, which shows a cart glyph in the same box as its neighbours.
- The VirtueMart category menu opens its subcategories with the arrow on phones.
- The cart icon shows how many items are in the cart, on phones and on the desktop bag icon, and updates when VirtueMart refreshes the cart. On phones the cart opens as a panel centred on the screen, keeping Flat Store’s dark panel and readable text.
- The cart panel, the login form and open dialogs close when you tap outside them.
- The search box, and the cart and login fields, use a 16 px font and a 44 px height, so iPhones do not zoom the page when you tap into them.
- On account pages (login, registration, password reset, VirtueMart account), phones show the page content first, with only the breadcrumbs and the store menu above it.
- On the product page, the quantity and Add to Cart bar takes its own row on phones, clear of the “Ask a question” link below it.
- Joomla’s page navigation wraps to fit a phone, and the VirtueMart cart page fits a phone screen.
- Flat Store’s own 2 px body padding no longer frames the phone page: the header, slideshow and footer run edge to edge, while text bands keep a 20 px side margin (
cs-no-bs2-gutterbody class plus a Flat Store 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 stays 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 a separate bare page. They fit a phone screen, show the message first on phones and ask search engines not to index them (
noindex, follow). Server errors (5xx) still use Joomla’s minimal system page.
Colour picker
- New custom field
fields/colorpicker.phpwith the bundled Coloris picker (js/coloris.min.js,css/coloris.min.css). All 90 colour settings are nowtype="colorpicker", with a live swatch and a picker that ships with the template, so nothing is fetched from an outside site. - New
fields/adminui.php: loads the Options screen’s support code, declares the jQuery framework it needs, 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_flat.ini(70 → 80), e.g.TPL_FLAT_FAVICON_TAB,TPL_FLAT_FAVICON_LABEL,TPL_FLAT_FAVICONTOOL_CREATE.
Modern social network support
- Eight new social services, each with a URL field and an on/off switch: Instagram, YouTube, Pinterest, Threads, TikTok, Bluesky, Mastodon, Discord (fields
instagram/instagramON…discord/discordON). With Facebook, LinkedIn, Vimeo, RSS and X, the footer carries 13 networks. - The Twitter slot is now X (formerly Twitter), with the X logo.
- The social icons are Font Awesome 6 brand glyphs (
fab fa-*) in place of the old image sprite, keeping the flat one-colour look. Each link has a screen-reader label.
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 238 call sites. Details under Security.
Changed
Joomla 5 platform
- Built for Joomla 5.4.10 and VirtueMart 4.8.4 (the previous download was built for VirtueMart 4.4.4).
- 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, in place of its own Bootstrap 2 copy (css/bootstrap/bootstrap.min.css,bootstrap-responsive.min.css,bootstrap-extended.css). - The print view and VirtueMart pop-up windows (
component.php, used for “Ask a question”, print and similar) now load the same Bootstrap 5 base and compatibility stylesheet as the main layout. Before, they loaded the template’s stylesheets with no Bootstrap underneath, plus the Internet Explorer 9–10 sheet. error.phpno longer builds its own XHTML page fromreset.css,text.css,typography.cssandpresets/style-error.css; it renders insideindex.php(see Own error pages).- 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, creation date09/09/2022→2026-10-16; the version shown in the template description and the@versiondocblock inindex.phpmatch.method="upgrade"is kept, so an existing install updates in place.
J3 → J5 API migration
- 188 Joomla 3 static class calls replaced with their namespaced Joomla 4+ forms (
JFactory→Factory,JText→Text,JHtml/JHTML→HTMLHelper,JRoute→Route,JURI→Uri,JModuleHelper,JPluginHelper,JComponentHelperand the rest).JError::raiseWarning()inerror.phpbecamethrow new \Exception(). These aliases exist only while Joomla’s Behaviour – Backward Compatibility plugin is enabled. - Template overrides converted (calls per file):
html/mod_login/default.php20,default_logout.php6.html/com_virtuemart/productdetails/default.php16, plusdefault_images.php4,default_reviews.php4,default_addtocart.php3,default_customfields.php1,default_showcategory.php1.html/com_virtuemart/user/login.php14,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.html/mod_virtuemart_product/single.php8,default.php6.html/com_virtuemart/virtuemart/default_products.php6,default.php1,default_categories.php1.html/com_virtuemart/category/default.php6,categories.php1.html/com_virtuemart/cart/default_shopperform.php6,default_pricelist.php5,default_coupon.php1.html/com_virtuemart/askquestion/form.php3,bs3-form.php3,mail_html_question.php2.html/mod_articles_latest/default_items.php6;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.
- In all, 54 of the 77 PHP overrides under
html/were modified.
Template Options screen
- 124 field type changes in
templateDetails.xml:- 90 colour settings:
type="color"→type="colorpicker"(for examplesitenamecolor,slogancolor,bodybackground,bodytextcolor,Hederbg). - 34 on/off settings: legacy
class="switch"checkbox → Joomla’s native on/off switcher (for exampleRSSON,H1TitleImgText,H2TitleImgText). With the retired social switches removed and eight new ones added, the template has 42 switchers and no legacy checkboxes (39 before).
- 90 colour settings:
- Fields 194 → 204, tabs 9 → 10. Tab names no longer end in “Settings”: Built-in Slideshow, Product Slider, Product Images, Theme, and Header & Footer Custom Code (was “Template Header And Footer Custom Code”).
- 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 front end loads Font Awesome 6.5.2 (
all.min.css) withv4-shims.min.css, in place of Font Awesome 5.0.1 fromuse.fontawesome.com. The template’s existingfa fa-*markup keeps working. - The Google Fonts
WebFontConfigJavaScript loader (webfont.jsfromajax.googleapis.com) is replaced by a direct Open Sans stylesheet link withdisplay=swap(WebFontConfig1 → 0).
Menus, background and selects without old jQuery plug-ins
- Drop-down menus open on hover through CSS (
nav.cssand the compatibility stylesheet) instead of the Superfish/Supersubs plug-ins. - The body background image set in the options is applied by a few lines of plain JavaScript and sized by the browser (
background-size: cover, fixed, centred) instead of Backstretch. - The currency selector is a plain HTML select, styled like the old label, instead of DropKick.
- jQuery itself still loads, for the camera slideshow (
jquery.easing.1.3.js,camera.min.js).
Articles
- Article Previous and Next buttons sit at opposite ends of the article; before, both were bunched at the left.
Stylesheets
- Every local stylesheet link carries a version marker (
?v=: 12 links inindex.php, 9 incomponent.php), so style changes show straight after an update instead of waiting for visitors’ browser caches to expire. css/template.css(28,952 → 29,585 bytes): four rules also match the Bootstrap 5.row/.col-md-2markup, the dead IcoMoon@font-faceis disabled (see Fixed), and a sizing rule was added for the social glyphs.
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 inhtml/com_virtuemart/user/login.phpis now the Joomla 5behavior.formvalidator. With thanks to Zoltán Szász, whose report led to this fix across our templates. - 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. - Store owners and vendors got a server error on the front-end account page and the cart’s change-shopper form.
JHtml::_('Select.…')with a capital S cannot be resolved by Joomla 5 (“HTMLHelper Select not found”). Fixed inhtml/com_virtuemart/user/bs3-edit_vendor.phpandhtml/com_virtuemart/cart/default_shopperform.php. - The colour settings were plain text boxes on Joomla 5, so a colour could only be changed by typing its hex code. All 90 now have the colour picker.
- The Options screen loaded its icon font from MaxCDN, which has shut down, so the panel’s icons failed to load.
- 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: the 3
@imports ofmedia/jui/css/bootstrap*.cssincss/print.css, which Joomla 4 removed, are gone. - Cart page: the update-quantity and remove buttons were blank boxes, because they used the Joomla 3
media/juiGlyphicons sprite. They now show Font Awesome 6 icons (arrows for update, a bin for remove). - Product page: the print and e-mail icons (
<a class="modal">) were caught by the dialog positioning rule and sat in the top-left corner of the page. They now sit in the product’s icon row. - Fixes from a maintenance pass across our templates:
- The
@font-faceincss/template.csspointing at the removedmedia/jui/fonts/IcoMoon font is disabled; it returned four 404s on every page. - Joomla 4+ pagination arrows (
.icon-angle-left/-right/-double-left/-double-right) show arrows again instead of empty squares. - 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 MooTools-era scripts are gone (see Removed), and the version shown in the Options description matches the release.
- The
Removed
Bootstrap 2 copy
css/bootstrap/(7 files):bootstrap.css,bootstrap.min.css,bootstrap-responsive.css,bootstrap-responsive.min.css,bootstrap-extended.css,bootstrap-rtl.css,bootstrap-tooltip-extended.css.
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, the remotehtml5.js(html5shiv) andwebfont.js. The local files remain injs/(30 → 34 files) but nothing loads them. - Stylesheets: Font Awesome 5’s
all.css,bootstrap-extended.css,bootstrap-responsive.min.css,reset.cssandstyle-error.css(the old error page), 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.phpandtoggleModule2.php.
Old colour picker and admin script
utils/js_colourchanger/(jscolor.js,arrow.gif,cross.gif,hs.png,hv.png).utils/admin-js.js, the Joomla 3 jQuery script that drew the legacy on/off switches, and the<script>in the template description that loaded it.
Retired social services
- Five social slots removed with their URL fields and 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 (238 call sites):
phEsc()for HTML text and attributes.phHexColor()for colours.phCssDim(),phCssNum(),phCssFont(),phCssToken(),phCssSelector()andphCssUrl()for values inside inline<style>. The colour-theme preset name that builds a stylesheet path is escaped in bothindex.phpandcomponent.php.phJsStr()andphJsLit()for values inside inline JavaScript, such as the background image URL.
- 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.phpnow go throughphEsc(strip_tags(…)). - Social links were printed unescaped; all 13 now go through
phEsc()and open withrel="noopener". - 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 82, includingmod_login,mod_articles_latest,mod_menu,mod_breadcrumbs(module class suffix),mod_virtuemart_cart, thecom_contentblog, featured and archive views, the VirtueMart address-field overrides, and theslidesandvmdefaultmodule chromes.
Quickstart Installer
The Quickstart is a complete Joomla 5.4.10 site with VirtueMart 4.8.4 and Flat Store 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,flatandsystem. VirtueMart’s demo templatesvmbasic,horme_3andvmbeez3are gone;horme_3andvmbeez3carried error pages that returned a server error. - VirtueMart 3’s old Klarna and Klarna Checkout payment plugins, which VirtueMart 4 no longer ships and which were never enabled, are no longer included.
- Joomla 5.4’s “What’s New” guided tour (tour 15) no longer starts by itself (
autostart = 0), so it does not send 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: Flat Store now installs as a Joomla package (
pkg_flat-5.4.10.zip, manifestpkg_flat.xml) that installs and registers theflattemplate extension. It declaresmethod="upgrade", so an existing Flat Store updates in place, and<blockChildUninstall>true</blockChildUninstall>, so the template is removed through the package rather than on its own. - Quickstart bundle:
flat-quickstart-J5.4.10.zip, a complete Joomla 5.4.10 install with VirtueMart 4.8.4 and Flat Store pre-loaded as the active template, installed through Joomla’s own installer. The previous quickstart was an Akeeba backup archive (.jpa) restored with Kickstart.
Version numbering: from this release the first three digits of Flat Store’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; it ran on Joomla 5 but was still built on Bootstrap 2 and Joomla 3 class calls. - 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-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-01-18, Version:
18.01.2024 4.3.4/4.2.0, Notes:
- Fixed - Minor bugs
- Release Date:
2023-12-19, Version:
07.12.2023 4.3.4/4.2.0, Notes:
- Updated - Compatible with PHP 8.2
- Updated - Compatible with Joomla 4.3.4
- Updated - Compatible with VirtueMart 4.2.0
- Fixed - Minor bugs
- 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: