VM Theon

Furniture Store Joomla Template For Virtuemart

Build a mobile friendly ecommerce website today with the Furniture store virtuemart template for Joomla

 
  • Change Log:
    October 19, 2026

    Version 5.4.10.3

    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.

    October 19, 2026

    Version 5.4.10.2

    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.

    Product module, Slick slider layout. Choosing the slider layout for the VirtueMart product module stopped the page with a server error: it called behavior.modal, which Joomla 4 removed.

    October 16, 2026

    Version 5.4.10.1

    Phones. The cart drop-down shows its items, prices and totals again (the text was white on white).

    Articles. The Previous and Next buttons sit at opposite ends of the article.

    October 16, 2026

    Version 5.4.10

    First Joomla 5 native release. Furniture Store has been brought forward from the previous download (06.08.2025 5.3.0/4.4.4) to Joomla 5.4.10 + VirtueMart 4.8.4 + PHP 8 + Bootstrap 5. It keeps its Bootstrap 2 layout classes and renders on Joomla 5’s bundled Bootstrap 5 through a compatibility stylesheet, so existing module and article markup keeps its layout. This release adds a phone layout with a slide-out menu and a fingertip-sized toolbar, a colour picker for every colour setting, Joomla’s own on/off switches, a favicon tool, current social networks and the template’s own 404 page. The Joomla 3 class calls have been converted, and template settings written into the page are now escaped. jQuery still loads for the camera slideshow, the product carousels, the parallax bands and the cookie-law popup; the old jQuery menu, background and IE plug-ins are no longer loaded. Across the template, 10 files were added, 10 removed and 67 modified (269 files before and after). The template version now matches the Joomla version it ships with.

    Added

    Bootstrap 5 compatibility layer

    • New css/bs2-bs5-bridge.css: maps Furniture Store’s Bootstrap 2 grid (.row-fluid, .spanN, offsets, the hidden-phone / visible-phone / hidden-tablet / visible-desktop utilities), tab panes, block-level .nav > li > a anchors, buttons, form fields and the login dialog shell onto Joomla 5’s Bootstrap 5. It is linked last in the page head, immediately before </head>, with a file-time version marker, so it sits in the right place in the cascade.
    • index.php, component.php (print view and VirtueMart pop-ups) and the error page all load Joomla’s /media/vendor/bootstrap/css/bootstrap.min.css, plus bootstrap.rtl.min.css on right-to-left sites, and then the compatibility stylesheet.
    • New js/cs-jq-compat.js: restores four jQuery 1.x calls that Joomla 5’s jQuery 3 dropped but the bundled camera slideshow and Stellar parallax scripts still use (.live(), .offset() on the window, .load(fn) as a load-event shortcut, and $.browser). It replaces the inline jQuery.browser shim that index.php used to carry.

    Phone layout

    • New js/cs-mobile-generic.js: on phones (up to 767 px) a compact header with a menu button that opens the main menu as a slide-out panel.
    • A phone toolbar under the header with five 44×44 px buttons of matching size: Section menu (the shop categories), Log in, Search, Follow us (the social links) and Cart.
    • A count badge on the cart icon whenever the cart holds items, on phones and on desktop. On desktop the number shows all the time, not only on mouse-over, and the template’s own hover bubble is hidden while it shows, so the count never appears twice.
    • The cart drop-down and open dialogs close when you tap outside them. The login dialog, which is taller than a phone screen, closes with its ×.
    • The phone search box uses 16 px text in a 44 px field, so iPhones do not zoom the page when you tap into it. The header sits in the page flow, with no empty band above the page and one submit button in the search panel.
    • 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 box, Add to Cart “+” and up/down controls take their own 50 px row on phones. They used to sit on top of the “Ask a question about this product” button below them.
    • On phones the page uses the full screen width (cs-no-bs2-gutter body class) while text keeps a side inset, and 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. It stays on the same line as the field, phones included.

    Own error pages

    • “Page not found” (404) and “access denied” (403) pages are shown inside the template, with its header, menus, phone toolbar and footer, instead of a bare page. They fit a phone screen and are marked noindex. Server errors (5xx) still use Joomla’s minimal system page.

    Colour picker

    • New custom field fields/colorpicker.php with the bundled Coloris picker (js/coloris.min.js, css/coloris.min.css). All 19 colour settings (e.g. sitenamecolor, slogancolor, cookiecolor1) are now type="colorpicker", with a live swatch and a picker that ships inside the template, so nothing is loaded from an outside site.
    • New fields/adminui.php: loads the Options screen’s support code, declares the jQuery framework the older option scripts 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). Pick one image and the template outputs a 32×32 PNG tab icon and a 180×180 Apple touch icon, generated into images/favicon-generated/; the template’s favicon.ico is the fallback. With thanks to Gianluca, whose favicon question inspired this tool.
    • index.php writes the favicon links through two new helpers, phFaviconSet() and phIcoBytes().
    • 10 new language strings in en-GB.tpl_furniturestore.ini, e.g. TPL_FURNITURESTORE_FAVICON_TAB, TPL_FURNITURESTORE_FAVICON_LABEL, TPL_FURNITURESTORE_FAVICONTOOL_CREATE. The file goes from 74 to 82 strings.

    Modern social network support

    • Five new social services, each with a URL field and a show/hide switch: Threads, TikTok, Bluesky, Mastodon and Discord (threads/threadsON, tiktok/tiktokON, bluesky/blueskyON, mastodon/mastodonON, discord/discordON).
    • The Twitter slot is now X (formerly Twitter), with the X logo.
    • Social icons are Font Awesome 6 brand glyphs (fab fa-x-twitter, fab fa-facebook-f, fab fa-instagram …) in place of the old socicon-* icon classes. They keep the template’s own round monochrome style.

    Security helpers

    • 13 helper functions in index.php (seven of them also in component.php): phEsc(), phRichText(), phHexColor(), phCssDim(), phCssNum(), phCssFont(), phCssSelector(), phCssToken(), phCssUrl(), phJsStr(), phJsLit(), phFaviconSet(), phIcoBytes(). They are used at 287 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 Joomla 5.3.0 and VirtueMart 4.4.4.
    • component.php used to load no Bootstrap at all, only template.css and the colour preset. It now loads the same Bootstrap 5 base and compatibility stylesheet as the main layout.
    • The login dialog is a Bootstrap 5 dialog: #LoginForm is wrapped in .modal-dialog / .modal-content, and index.php’s login button, close buttons and home-page product tabs use data-bs-toggle / data-bs-dismiss (Bootstrap 5 data-bs-* attributes across the template: 7 → 16).
    • templateDetails.xml: version 06.08.2025 5.3.0/4.4.4 → 5.4.10, creation date 18/04/2017 → 2026-10-16. The version shown in the template description and the @version docblock in index.php match. method="upgrade" is kept, so an existing install updates in place.

    J3 → J5 API migration

    • 249 Joomla 3 static class calls converted to the namespaced Joomla 4+ API in index.php (37), error.php, component.php and 45 overrides: JFactory → Factory, JText → Text, JHtml / JHTML → HTMLHelper, JRoute → Route, JURI → Uri, JModuleHelper → ModuleHelper, JPluginHelper → PluginHelper, JError::raiseWarning() → throw new \Exception(), and the rest. These aliases exist only while Joomla’s Behaviour – Backward Compatibility plugin is enabled, and not at all in Joomla 6.
    • Template overrides converted (calls per file):
      • html/mod_login/default.php 20.
      • html/com_virtuemart/productdetails/default.php 16, plus default_images.php 4, default_reviews.php 4, default_addtocart.php 3, default_customfields.php 1, default_showcategory.php 1.
      • html/com_virtuemart/user/login.php 14, edit_address.php 6, bs3-edit_address.php 5, bs3-edit_vendor.php 4, edit.php 3, bs3-edit.php 3, edit_orderlist.php 3, mail_raw_regvendor.php 3, edit_vendor.php 2, bs3-edit_shopper.php, bs3-edit_address_userfields.php, mail_html_reguser.php, mail_raw_reguser.php 1 each.
      • html/mod_virtuemart_product/single.php 13, slick-slider.php 13, default.php 11.
      • html/com_virtuemart/category/default.php 7, productsviewarray.php 4, categories.php 1.
      • html/com_virtuemart/virtuemart/default_products.php 7, default_categories.php 4, default.php 1.
      • html/com_virtuemart/cart/default_pricelist.php 5, default_address.php 2, default_coupon.php 1.
      • html/com_virtuemart/askquestion/form.php 3, bs3-form.php 3, mail_html_question.php 2; html/com_virtuemart/sublayouts/addtocart.php and addtocartbar.php 1 each.
      • html/mod_virtuemart_category/default.php 6, html/mod_virtuemart_cart/default.php 3, html/mod_virtuemart_manufacturer/default.php 2, html/mod_virtuemart_currencies/default.php 1.
      • html/mod_articles_latest/default_items.php 6, html/mod_menu/default.php 2, html/mod_breadcrumbs/default.php 1, html/mod_search/default.php 1.
    • In all, 61 of the 87 PHP overrides under html/ were modified. defined('_JEXEC') guards: 74 → 77 files.

    Template Options screen

    • 108 field type changes in templateDetails.xml:
      • 89 on/off settings: the legacy class="switch" checkboxes, which needed the jQuery script utils/admin-js.js to draw them, are now Joomla’s native on/off switchers (type="radio", joomla.form.field.radio.switcher), for example logoLinked, H1TitleImgText, RSSON, OverrideDefaultSettings, AdditionalGFontON, cam_autoAdvance. With four retired social switches removed and five new ones added, the template has 94 switchers and no legacy checkboxes (93 before).
      • 19 colour settings: type="color" → type="colorpicker".
    • Fields 352 → 358, tabs 15 → 16. Tab names no longer end in “Settings” (“Theme Settings” → “Theme”, “Fonts Settings” → “Fonts”, “Site Name And Slogan Settings” → “Site Name & Slogan”, “Built-in Slideshow Settings” → “Built-in Slideshow” and so on; “Template Header And Footer Custom Code” → “Header & Footer Custom Code”).
    • The Options screen’s icon font is now Font Awesome 6.5.2 + v4 shims instead of Font Awesome 4.6.3 from the shut-down MaxCDN (maxcdn 1 → 0), so the panel’s fa fa-* icons display again.

    Fonts and icons

    • The Google Fonts WebFontConfig JavaScript loader (webfont.js from ajax.googleapis.com) is replaced by a direct font stylesheet link in index.php and component.php (WebFontConfig 2 → 0).
    • The front end loads Font Awesome 6.5.2 (all.min.css + v4-shims.min.css) instead of Font Awesome 4.7.0 from MaxCDN. Older fa fa-* class names keep working. FA4 class names in the template went from 21 to 11, including the overrides com_virtuemart/category/productsviewarray.php and mod_virtuemart_cart/default.php.
    • Joomla’s own icon-* classes (pagination arrows, the password eye) are mapped to Font Awesome 6 glyphs.

    Menus and background without old jQuery plug-ins

    • Drop-down and mega menus open on hover through CSS, with a short close delay and a hover bridge across the gap under the menu bar, instead of the Superfish/Supersubs plug-ins. A small inline script keeps the template’s open-parent highlight and sub-menu arrows.
    • The body background image is sized with CSS background-size: cover instead of Backstretch.
    • Template-side jQuery call sites: 169 → 148.

    Stylesheets and layout

    • Every local stylesheet link carries a version marker (?v=), so style changes show straight after an update instead of waiting for visitors’ browser caches to expire.
    • The VirtueMart category description no longer has side padding.
    • css/template.css: 208,245 → 213,733 bytes.

    Fixed

    Pages that returned a server error or showed nothing

    • Every “page not found” returned a server error when Joomla’s backward-compatibility plugin was off (and always on Joomla 6). error.php used JError::raiseWarning() and JText; it now uses the Joomla 4+ API.
    • The account page showed an error for store owners and vendors. html/com_virtuemart/user/bs3-edit_vendor.php called JHtml::_('Select.genericlist') with a capital S (4 calls), which Joomla 5 cannot resolve. It now calls HTMLHelper::_('select.genericlist').
    • The VirtueMart login form could stop with “behavior::formvalidation not found”. The Joomla 3 behavior.formvalidation call in html/com_virtuemart/user/login.php is now the Joomla 5 behavior.formvalidator. With thanks to Zoltán Szász, whose follow-up report led to this fix across our templates.
    • The address form could fail on PHP 8. html/com_virtuemart/user/bs3-edit_address.php called count($this->userFields['functions']) on a value that can be empty; it now uses !empty(). Also thanks to Zoltán Szász, whose report found it.
    • The password reset, login and username reminder pages showed a blank page when they had no menu item of their own. They borrowed the home page’s template style, which hides the main content on the home page. index.php now shows the content on those pages; the home page is unchanged.
    • Breadcrumbs: html/mod_breadcrumbs/default.php printed the result of isset($moduleclass_sfx) (a true/false value) where the module class suffix belongs. It now prints the escaped suffix.

    Browser errors and dead requests

    • The previous version’s home page raised 14 JavaScript errors in the browser console on Joomla 5; this release raises none.
    • Stylesheet links to files that are not in the template were removed: css/camera.css on the home page, css/template_rtl.css in the print view, and reset.css, text.css, typography.css and template_rtl.css on the error page. Each returned the site’s “page not found” response.
    • The Options screen requested Font Awesome 4.6.3 from MaxCDN, which has shut down, on every visit.
    • 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.

    Maintenance pass

    • The @font-face in css/template.css pointing at the removed media/jui/fonts/ IcoMoon font is disabled; it returned 404s on every page.
    • Pagination arrows (icon-angle-left / -right / -double-left / -double-right), which had no glyph and showed as empty squares, now show Font Awesome arrows.
    • 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).
    • With thanks to Michael Mullan, whose Expression bug report led to this maintenance pass across our templates.

    Removed

    Bootstrap 2 and Joomla 3 files

    • The template’s own Bootstrap 2 copy: css/bootstrap/ (bootstrap.css, bootstrap.min.css, bootstrap-responsive.css, bootstrap-responsive.min.css, bootstrap-extended.css, bootstrap-rtl.css, bootstrap-tooltip-extended.css) and the archive css/bootstrap.zip.
    • html/modules.php: Joomla 3 modChrome_ module chromes, which Joomla 5 never calls.
    • utils/admin-js.js, the Joomla 3 jQuery script that drew the old on/off switches, and the <script> tag that loaded it from the template description.

    Legacy scripts no longer loaded

    • superfish.js, supersubs.js, jquery.backstretch.min.js, jquery.mobile.customized.min.js, and the Internet Explorer scripts modernizr.js, selectivizr-min.js and html5.js (from googlecode.com). The template’s own copies remain in js/ (29 → 33 files) but nothing loads them.

    Legacy stylesheets no longer loaded

    • Bootstrap 2 (bootstrap.min.css, bootstrap-responsive.min.css, bootstrap-extended.css), Font Awesome 4 (font-awesome.min.css), presets/style-error.css, and the Internet Explorer sheets ie.css and ie6.css with their conditional comments. Joomla’s Bootstrap 5 and the compatibility stylesheet take their place.

    Retired social services

    • Four social slots removed with their switches: Google+ (gplus), StumbleUpon, Digg and Blogger, plus the two Blogger language strings.

    Security

    • Template settings written into the page are escaped for where they appear, through the new helpers (287 call sites):
      • phEsc() for HTML text and attributes.
      • phHexColor() for colours.
      • phCssDim(), phCssNum(), phCssFont(), phCssToken(), phCssSelector() and phCssUrl() for values inside inline <style>.
      • phJsStr() and phJsLit() for values inside inline JavaScript.
    • Site-title fields (H1Title / H2Title) go through phRichText(): formatting markup is kept, but scripts, styles, iframes and on* event handlers are stripped.
    • Social links used to echo their URLs unescaped. All 18 hrefs (the named services, RSS and the five custom slots) now go through phEsc(), and the links carry rel="noopener".
    • Image alt text built with strip_tags() did not escape quotes; the 3 occurrences in index.php are now escaped.
    • The error page escapes the error message it prints.
    • Module, menu and tab titles are escaped in index.php, the module chromes (html/layouts/chromes/megamenu.php, parallax.php, slides.php, testimonial.php, vmdefault.php, vmdefaultlogin.php, vmtab.php) and the overrides. htmlspecialchars/escape calls across the template rose from 50 to 98, including mod_login, mod_custom, mod_menu, mod_breadcrumbs, mod_articles_latest, mod_virtuemart_cart, the com_content category, featured and archive views, and the VirtueMart address-field overrides.

    Quickstart Installer

    The Quickstart is a complete Joomla 5.4.10 site with VirtueMart 4.8.4 and Furniture Store installed as the active template, with the demo content. It is now a zip that installs through Joomla’s own installer, in place of the previous Akeeba .jpa archive and Kickstart.

    • 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 holds cassiopeia, furniturestore and system.
    • Joomla 5.4’s “What’s New” guided tour (tour 15) no longer starts by itself (autostart = 0). Otherwise it sends 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 there are no template override records (no “changes found” warning).

    Package format

    • Standalone template: Furniture Store now installs as a Joomla package (pkg_furniturestore.xml, download pkg_furniturestore-5.4.10.zip) that installs and registers the furniturestore template extension. It declares method="upgrade", so an existing Furniture Store updates in place, and <blockChildUninstall>true</blockChildUninstall>, so the template is removed through the package rather than on its own. The package names an update server for Joomla’s Update Manager. The previous download was the bare template folder (furniturestore.zip).
    • Quickstart bundle: a complete Joomla 5.4.10 install with VirtueMart 4.8.4 and Furniture Store pre-loaded as the active template.
    Version numbering: from this release the first three digits of Furniture 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 versioned 06.08.2025 5.3.0/4.4.4.
    August 6, 2025

    Version 06.08.2025 5.3.0/4.4.4

    • Upgraded - Now compatible Joomla 5
    • Upgraded - Now compatible Virtuemart 4.4.4
    • Fixed - Minor bugs
    November 29, 2024

    Version 29.11.2024 5.1.2/4.2.12

    • Fixed - Minor bugs with cart
    August 15, 2024

    Version 15.08.2024 5.1.2/4.2.12

    • Upgraded - Now compatible Joomla 5
    • Upgraded - Now compatible VirtueMart 4.2.12
    • Fixed - Minor bugs
    November 17, 2023

    Version 31.10.2023 4.3.4/4.2.0

    • Updated - Compatible with PHP 8.2
    • Updated - Compatible with Joomla 4.3.4
    • Updated - Compatible with VirtueMart 4.2.0
    • Fixed - Minor bugs
    June 30, 2023

    Version 26.06.2023 4.3.0/4.0.13

    • Fixed - VirtueMart Products Module issue
    • Fixed - Double ReCaptcha on VirtueMart Registration page
    • Fixed - Template toggle button not displaying
    June 23, 2023

    Version 16.06.2023 4.3.0/4.0.13

    • Fixed - Menu Params error for adding in image on menu
    May 20, 2023

    Version 20.05.2023 4.3.0/4.0.12

    • Fixed - Template updated to be compatible with Joomla 4.3
    August 23, 2022

    Version 23.08.2022 3.10.11/4.0.6

    • Fixed - Joomla 3.10.11 
    • Fixed - Template updated for PHP 8.0