This website is using cookies
×
  • November 5, 2026

    Version 5.4.10

    First Joomla 5 native release. Universal Shop has been rebuilt for Joomla 5.4.10 + VirtueMart 4.8.6 + PHP 8 + Bootstrap 5. The previous download (universal.zip, version string 27.06.2024 5.1.0/4.2.12) was built for Joomla 5.1 and VirtueMart 4.2.12 and relied on Joomla's Behaviour - Backward Compatibility plugin; everything below is measured against it. Every Joomla 3 class call is gone (175 calls), the template options use Joomla 5's own on/off switches and a real colour picker, every template setting written into the page is escaped, and there is a new phone layout with a slide-out menu and a fingertip-sized toolbar. The page layout in index.php now uses Bootstrap 5 columns, while the VirtueMart overrides and module content keep their Bootstrap 2 classes and render on Joomla 5's Bootstrap 5 through a compatibility stylesheet. jQuery still loads (Joomla's own copy) for the camera slideshow, the Owl product and testimonial carousels, the product image zoom, the scroll animations and the cookie notice; the old jQuery menu, background, select-box and polyfill plug-ins are gone. Template files: 216 → 194, with 10 added, 32 removed and 46 modified. The template version is now 5.4.10, matching the Joomla version it ships with.

    Added

    Bootstrap 5 rendering through a compatibility stylesheet

    • index.php loads Joomla 5's bundled Bootstrap 5 (/media/vendor/bootstrap/css/bootstrap.min.css) in place of the template's own Bootstrap 2 sheets (css/bootstrap/bootstrap.min.css, bootstrap-responsive.min.css, bootstrap-extended.css), before the template's own stylesheets, so template.css still wins the cascade.
    • New css/bs2-bs5-bridge.css, linked last in the page head on every page, with a file-time version marker. It lets Universal Shop's Bootstrap 2 markup render correctly on Bootstrap 5:
      • Bootstrap 2 grid: .row-fluid / .spanN widths and gutters, nested spans and .offsetN, row clearfix, and phone stacking of every span column.
      • The Bootstrap 2 responsive utilities (hidden-phone, visible-phone, hidden-tablet, visible-tablet, hidden-desktop, visible-desktop), tab panes, collapse, .well / .page-header and Bootstrap 2 base typography.
      • Joomla 4/5 icon classes (pagination arrows, the password eye and others) mapped to Font Awesome 6 glyphs.
    • New js/cs-jq-compat.js: restores three jQuery 1.x calls that Joomla 5's jQuery 3.7 removed but the bundled camera.js slideshow still uses (.live(), .offset() on the window, and .load(fn) as a load-event shortcut).

    New phone layout

    • New js/cs-mobile-generic.js. On phones (up to 767 px) a menu button in the header opens the main menu as a slide-out panel, with submenus opening in place.
    • A phone toolbar of six 44×44 px buttons: Section menu, Log in, Register, Search, Follow us (the social links) and Cart, in the template's accent colour.
    • Section menu opens the shop categories. It reads a new module position, cs-secondary (declared in templateDetails.xml and output in a hidden holder in index.php), so any menu module published there appears behind that button.
    • The currency selector, which sat alone in a bar above the logo, moves into the bottom of the slide-out menu on phones (a full-width selector with its refresh button) and returns to the top bar from 768 px.
    • Opening a phone panel (menu, search, account, cart, social links) dims the page below the header only; the logo, menu button and button row stay clear.
    • With products in the cart, the phone's cart button shows the number of items.
    • Cart page on phones: each product row becomes a card with labelled price, quantity, tax and total, the totals become label/value lines, and the billing, shipping and checkout buttons run full width at 44 px. Nothing runs off the screen.
    • Account pages on phones (login, registration, your account) show the page content first, with only the breadcrumbs and the store category menu above it.
    • The page heading, breadcrumbs, login and contact forms and the footer bands line up on the content column's single 20 px edge.
    • Blog and category page numbers wrap onto a second line on phones instead of running under the buttons.
    • The login and cart form fields use 16 px text on phones, so iPhones no longer zoom the page in when you tap them.
    • The slideshow's previous / next arrows sit in the bottom corners on phones, clear of the slide's Buy now button.

    Login forms

    • New js/cs-password-eyeball.js: every login form (the login page, the header login and VirtueMart's checkout and account login) gets a show password eye inside the password field, and the password field takes the same width and height as the username field beside it.

    Cart

    • The cart drop-down ends with a Check Out Now button, shown once the cart has products and kept in step when products are added without a page reload (html/mod_virtuemart_cart/default.php). It offered only Show Cart before.

    Favicon

    • New Favicon tab in the template options (fieldset faviconsettings, fields favicon and favicontool, field class fields/favicontool.php). Pick one image and the template outputs the icon set (phFaviconSet(), phIcoBytes() in index.php); the template's own favicon.ico stays as the fallback. With thanks to Gianluca, whose favicon question inspired this tool.
    • 10 new language strings (TPL_UNIVERSAL_FAVICON_*, TPL_UNIVERSAL_FAVICONTOOL_*). The language file goes from 74 to 84 strings.

    Modern social network support

    • Five new social services, each with its own URL field and 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. The full set is X, Facebook, Instagram, Threads, Bluesky, Mastodon, LinkedIn, YouTube, TikTok, Vimeo, Pinterest, Discord and RSS.
    • Social icons are Font Awesome 6 brand glyphs (fa-x-twitter, fa-bluesky, fa-threads and so on) in place of the old socicon-* icon font.

    Template options (administrator)

    • Colour picker: the open-source Coloris picker ships inside the template (css/coloris.min.css, js/coloris.min.js, field class fields/colorpicker.php), so nothing is fetched from another site.
    • Custom CSS field (customcss, on the Header & Footer Custom Code tab), and support for a css/custom.css file. Both load after the compatibility stylesheet, so your rules win. The file is deliberately not listed in the package, so a template update can never overwrite or remove it, and the field is stored in the database.
    • New fields/adminui.php: help rows in the options run the full width of the form instead of a narrow column, and the template's Details panel follows Joomla's light or dark admin theme.

    Changed

    Joomla 5 platform

    • Built for Joomla 5.4.10 and VirtueMart 4.8.6 (previous download: Joomla 5.1, VirtueMart 4.2.12), with no need for Joomla's Backward Compatibility plugin.
    • templateDetails.xml version 27.06.2024 5.1.0/4.2.12 → 5.4.10 and creation date 2026-11-05. 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.

    Layout grid

    • The page layout in index.php now uses Bootstrap 5 rows and columns: .row-fluid 29 → 8, .spanN 55 → 6, .col-md-N 0 → 49.
    • The VirtueMart overrides and the module content keep their Bootstrap 2 classes, rendered by the compatibility stylesheet.

    J3 → J5 API migration

    • 175 Joomla 3 static class calls → 0. Each moved to its namespaced Joomla 4+ form: JRoute → Route (the most common, 55), JText → Text, JFactory → Factory, JHtml / JHTML → HTMLHelper, JURI → Uri, JModuleHelper → ModuleHelper, JPluginHelper → PluginHelper, JComponentHelper → ComponentHelper, and JDocumentHTML → the document's own countModules(). The jimport() call is gone.
    • Heaviest files: html/mod_login/default.php (20), html/com_virtuemart/user/login.php (19), index.php (17), html/com_virtuemart/productdetails/default.php (16), html/com_virtuemart/category/default.php (9), html/com_virtuemart/virtuemart/default_products.php (9), html/mod_virtuemart_product/single.php (9).
    • Every VirtueMart override folder was converted: askquestion, cart, category, productdetails, sublayouts, user and virtuemart, plus mod_virtuemart_cart, _category, _currencies, _manufacturer, _product, mod_breadcrumbs, mod_login, mod_menu, mod_custom and mod_search. In total 39 of the 47 PHP overrides changed.

    Template options (administrator)

    • 150 field type changes in templateDetails.xml:
      • On/off settings: every legacy class="switch" type="checkbox" (72 before) is now Joomla 5's radio switcher (for example OverrideDefaultSettings, RSSON, AdditionalGFontON, H1TitleImgText, cam_autoAdvance). With the retired settings removed and the new social switches added, the template has 69 switchers and no legacy checkboxes.
      • 86 colour settings: type="color" → type="colorpicker", with a live swatch.
    • Template options: 296 → 294 fields, 13 → 14 tabs. Tab names lose their trailing "Settings" (for example Built-in Slideshow, Drop Down Menus, Theme), and the social labels read "Show X (formerly Twitter)" and so on.

    Icons and fonts

    • Front end: Font Awesome 4.6.3 from MaxCDN → Font Awesome 6.5.2 (all.min.css + v4-shims.min.css from cdnjs). The template's existing fa fa-* class names keep working through the shims.
    • Google Fonts load through a stylesheet <link> (with preconnect and display=swap) in index.php. The WebFontConfig JavaScript loader, which fetched webfont.js from ajax.googleapis.com, is gone (2 → 0).

    Menus and backgrounds

    • The hover drop-down menus are driven by CSS (with a small hover helper in the template's phone script) instead of the Superfish / Supersubs jQuery plug-ins. The drop-down stays open while the pointer moves down to it, and nested items that open a fly-out still carry a ▸ marker.
    • The background image set in the template options is sized with CSS (background-size: cover) instead of jQuery.backstretch(), which was loaded twice before.

    Forms and store pages

    • One field size per form: VirtueMart's registration, account and checkout address forms mixed required fields, held to 60% of the row by the template's input.required rule, with full-width optional ones. Every text field in those forms now takes the full row at one height.
    • css/template.css: 178,886 → 180,031 bytes.

    Fixed

    Pages that failed on Joomla 5

    • Shop login page: html/com_virtuemart/user/login.php called JDispatcher, behavior.modal and behavior.formvalidation, none of which exist in Joomla 5, so the VirtueMart login page returned a 500 without the Backward Compatibility plugin. It now uses triggerEvent() and behavior.formvalidator, and the modal call is gone. With thanks to Zoltán Szász, whose follow-up report led to the formvalidation fix across our templates.
    • Error pages: error.php used JError and JText. With Joomla's Behaviour - Backward Compatibility plugin off, and always on Joomla 6, Joomla could not render any error page, so every "page not found" became a 500. "Page not found" and "access denied" pages now show inside the template, with its header, menus and footer, and fit a phone screen; they also stopped requesting reset.css, text.css, typography.css and template_rtl.css, which do not exist.
    • Error pages and server details: an error caused by a missing item no longer prints the server's file paths and a technical trace, and a missing article or contact answers with the proper 404 page.

    Page layout

    • Footer columns: the footer chose between one and two columns with countModules('footer-left && footer-right'), a Joomla 3 expression that Joomla 4 and later read as a single position name, so it always chose one column and Copyrights and Payments stacked full width. Each position is now checked on its own, so they sit side by side.
    • Home page tabs: the Hot / Featured / Customers Choice product tabs now switch when a tab is clicked; with Joomla 5's Bootstrap they stayed on the first tab.
    • Slideshow arrows sat 3 px off the centre of their round buttons; they are centred.
    • Testimonials on small phones: the carousel's previous / next buttons no longer cover the end of the "Our happy customers said…" heading.

    Cart page

    • The Terms of Service box sat above the middle of its label; it is centred on it.
    • "Do you have an account?", Login and Register And Checkout ran together on one wrapping line; each now sits on its own centred line.

    Maintenance pass

    • The @font-face in css/template.css pointing at Joomla 3's media/jui/fonts/ IcoMoon font, which Joomla 4 removed, is disabled.
    • Pagination arrows: Joomla 4/5's icon-angle-left / -right / -double-left / -double-right buttons had no mapping in the template's icon CSS, so they showed no arrow. They now show Font Awesome 6 arrows.
    • Featured articles: in a one-column featured (home) view, tall intro articles were clipped to their title. They now show in full.
    • Search button: the global button margin pulled the search button away from its box. #search-position .btn now has margin:0.
    • With thanks to Michael Mullan, whose Expression bug report led to this maintenance pass across our templates.

    Defaults for a fresh install

    • The site name / logo now links to the home page and the built-in slideshow is switched on, with autoplay on desktop and phones (logoLinked, cam_turnOn, cam_autoAdvance, cam_mobileAutoAdvance default to on; they had no default before, so a fresh install showed them off). Existing sites keep their saved settings.

    Removed

    Files removed

    • Bootstrap 2: the whole css/bootstrap/ folder (bootstrap.css, bootstrap.min.css, bootstrap-responsive.css, bootstrap-responsive.min.css, bootstrap-extended.css, bootstrap-rtl.css, bootstrap-tooltip-extended.css), the css/bootstrap.zip archive beside it, and Bootstrap 2's js/bootstrap.min.js. Joomla 5's Bootstrap 5 and the compatibility stylesheet take their place.
    • 18 more JavaScript files nothing loads (js/ 26 → 11 files): jquery-1.8.1.min.js, jquery.noConflict.js, superfish.js, supersubs.js, jquery.backstretch.min.js, jquery.mobile.customized.min.js, jquery.selectric.js, dropkick.js, jquery.dropkick-1.0.0.js, jquery.nicescroll.min.js, selectnav.min.js, jquery.plusanchor.js, jquery.equalHeights.js, easypaginate.js, imgSizer.js, flexibility.js, modernizr.js and selectivizr-min.js.
    • The old Internet Explorer stylesheets css/ie.css and css/ie6.css with their conditional comments, and the html5.js shim.
    • html/modules.php: Joomla 3-style module chrome functions; Joomla 4/5 uses the layout chromes in html/layouts/chromes/.
    • html/com_virtuemart/productdetails/default_addtocart.php: nothing called it (the product page draws Add to Cart from sublayouts/addtocart.php).
    • utils/admin-js.js: a Joomla 3-era admin script for the old checkbox switches.

    Retired settings

    • Four social slots removed with their switches: Google+ (gplus), StumbleUpon, Digg and Blogger.
    • The Superfish drop-down settings that went with the old menu script (usedropdown, dropheight, dropwidth, dropopacity, dropspeed), and four settings nothing read: dropdownhandler1maxwidth, HRboxspeed, the colours_handlers note, and Slideshow Arrows Background (color37), which the template never applied.

    Security

    • 13 output helpers added in index.php (the escaping helper also in component.php), 295 references across the template. Every template setting written into the page is escaped for where it lands:
      • phEsc(): HTML text and attributes.
      • phRichText(): the site-name and slogan fields, which may contain simple markup. Joomla's input filter keeps the markup but strips scripts, styles, iframes and on* event handlers.
      • phHexColor() (114 uses), phCssToken(), phCssNum(), phCssDim(), phCssFont(), phCssSelector(), phCssUrl(): colours, sizes, fonts, selectors and image URLs written into the page's CSS.
      • phJsStr(), phJsLit(): values written into inline JavaScript.
      • phFaviconSet(), phIcoBytes(): favicon output.
    • Raw echo $this->params->get(…) output: 214 in index.php and 1 in component.php → 2, the Header and Footer Custom Code fields, which are administrator-only by design.
    • Module, menu and tab titles are escaped in the module chromes html/layouts/chromes/megamenu.php, slides.php, vmdefault.php and vmtab.php, and in mod_menu (default.php, default_component.php, default_separator.php, default_url.php), mod_custom, mod_login, mod_search and mod_virtuemart_cart. htmlspecialchars / escape calls in the template: 2 → 34.
    • The social links open with rel="noopener".
    • The error page escapes the error message it prints and casts the error code to a number.
    • html/com_virtuemart/cart/default_pricelist.php and html/com_virtuemart/category/productsviewarray.php could be requested directly; both now stop unless Joomla loads them (defined('_JEXEC') or die), like the rest of the template.

    Quickstart Installer

    The Quickstart is a complete Joomla 5.4.10 site with VirtueMart 4.8.6 and Universal Shop pre-configured as the active template, installed with Joomla's own web installer. The previous download was an Akeeba .jpa archive restored with Kickstart.

    • Bundled extensions: Akeeba Backup 10.5.0, Weblinks 5.2.0, MCP For J 2.11.0, StageIt 5.9.2.
    • The site templates/ folder holds only cassiopeia, system and universal. VirtueMart's demo templates horme_3, vmbeez3 and vmbasic are not included; the first two had error pages that returned a server error.
    • A Store Categories menu module is published at cs-secondary, so the phone's second menu button opens the shop categories.
    • Guests can use Ask a question on a product page without logging in first, and the demo's two Contact Us menu links (top menu and footer), which pointed nowhere, open the contact page.
    • The Smart Search index is built, so the site search returns results from the first visit.
    • Joomla 5.4's "What's New" guided tour does not start by itself, and Joomla's Statistics plugin is set to never send data.
    • A clean starting state: the action log is empty, hit counters are zero, no stale update notices are listed, and the post-installation messages are trimmed to Joomla's five new-site advisories (welcome, action logs, privacy, multi-factor authentication, automated updates).

    Package format

    • Standalone template: now a Joomla package, pkg_universal-5.4.10.zip (pkg_universal.xml), that installs the Universal Shop template (tpl_universal.zip) and registers it in the package manager. It declares method="upgrade", so an existing Universal Shop updates in place, and <blockChildUninstall>true</blockChildUninstall>, so the template is removed through the package rather than on its own. The previous download was a plain template zip.
    • Quickstart bundle: universal-quickstart-J5.4.10.zip, a complete Joomla 5.4.10 install with VirtueMart 4.8.6 and Universal Shop pre-loaded as the active template.
    Earlier history and version numbering: the previous Joomla 5 download was dated 27.06.2024 with the version string 5.1.0/4.2.12 (the Joomla and VirtueMart versions it was built for); the Joomla 4 package stays in the download area under LEGACY - Joomla 4 - Not Recommended For New Projects. From 5.4.10 the first three digits of the template version match the Joomla release it is built for; a later fix on the same Joomla release adds a fourth digit (5.4.10.1).
    July 17, 2024

    Version 27.06.2024 5.1.1/4.2.12

    • Update - Template updated to Joomla 5
    • Compatible with Virtuemart pre-release Version 4.2.12 
    • Minor Bugs fixed
    February 15, 2024

    Version 09.02.2024 5.0.2/4.2.6

    • Update - Template updated to Joomla 5
    • Compatible with Virtuemart pre-release Version 4.2.6
    • Please Note: VirtueMart 4.2.4,is not compatible with the Joomla 5, 
      therefore no Joomla 5 Quickstart until VirtueMart Version 4.2.6 is publicly released. 
    April 10, 2023

    Version 01.04.2023 4.2.8/4.0.12

    • Fixed - Template updated to be compatible with Joomla 4.2
×

logo


TOP
Connect