First Joomla 5 native release. Echo has been rebuilt from the ground up for Joomla 5.4.6 + VirtueMart 4.6.8 Pro + PHP 8.3 + Bootstrap 5.3.8 + vanilla JavaScript, with no carry-over of the Bootstrap 2 / jQuery 1.x dependencies that defined the earlier 3.x-era codebase. This is the first Echo release that ships with no template-side jQuery, no BS2 markup in any rendered output, and no remnants of the deprecated Joomla 3 /media/jui/ library.
Added
Joomla 5 native API
- Full Joomla 5 namespace compliance across all template files, overrides, and helper utilities — every
Joomla\CMS\* class accessed through its namespaced form.
templateDetails.xml rewritten to the J5 manifest schema with method="upgrade" declared so existing customers can update in place without uninstall-first.
- VirtueMart 4 helper integration refactored end-to-end for J5 namespace resolution.
Bootstrap 5.3.8 native rendering
- Template now renders directly against J5's bundled
/media/vendor/bootstrap/css/bootstrap.min.css — no separate Bootstrap copy, no compatibility shim CSS in the final shipped tree.
- Phase 3b legacy-Bootstrap purge (see Removed section below) — all BS2-era artifacts removed from the template tree.
- Phase 3d full CSS rewrite migrated 87+ grid selectors (
.spanN to .col-md-N, .row-fluid to .row) via word-boundary-protected regex.
echo-fixups.css bridge layer preserves backward compatibility for any third-party content posted by site editors using legacy BS2 markup.
Modern slideshow — Swiper
- Custom legacy
camera.js plugin replaced with Swiper, J5's bundled slideshow library.
- Per-slide CTA button styling, caption positioning, and overlay darkness now controllable from the module-edit UI rather than requiring code edits.
Vanilla JavaScript menu
- New
js/menu-vanilla.js — a self-contained IIFE replacement for the legacy superfish.js + supersubs.js + inline jQuery menu handlers.
- WeakMap-backed 500 ms mouse-out delay preserves the original menu-hover feel without any jQuery dependency.
Modern social-network support
- Social-media set parity — added Instagram, Threads, Bluesky, Mastodon, YouTube, TikTok, Pinterest, Discord.
- Removed dead networks: Google+, StumbleUpon, Digg, Blogger, MySpace.
- X (the Twitter rebrand) replaces the legacy Twitter icon.
Security helpers (XSS hardening)
- New escape and validation helpers added to
index.php:
phEsc() — HTML attribute escaping for href, src, alt, title, and Swiper caption output.
phHexColor() — color parameter validation with fallback to #000000 on bad input.
phCssDim() — dimension parameter validation accepting px / em / rem / % / vh / vw / pt / ex / ch / cm / mm / in.
- 124
phEsc() / phHexColor() / phCssDim() wraps applied across index.php template parameter echoes.
strip_tags() null-safety — H1Title and H2Title parameter echoes cast to string before strip_tags() (PHP 8.1+ deprecation fix).
- Active
.htaccess at the template root replacing the historical htaccess.txt placeholder, with a <FilesMatch> 403 rule for backup-extension patterns.
PHP 8.x dispatcher safety
$type fallback added to mod_login override — Joomla 5 split mod_login into separate login / logout templates and the dispatcher no longer passes $type. Fallback silences the Undefined variable $type warning while preserving the legacy logout branch.
$moduleclass_sfx fallback added to mod_breadcrumbs override.
Changed
J3 to J5 API migration
- Every deprecated
J* static class call migrated to its namespaced equivalent: JFactory, JText, JHtml, JUri, JRoute, JComponentHelper, etc.
Modernization swaps (Phase 5)
- Phase 5b: jQuery.dropkick currency selector replaced with native
<select> and CSS-only chrome.
- Phase 5c: Superfish menu replaced with vanilla
menu-vanilla.js (no jQuery dependency).
- Phase 5d: jQuery.backstretch replaced with CSS
background-size: cover.
- Phase 5e: Removed jQuery 3 compatibility shim (BS5 bundles its own modern jQuery).
- Camera slideshow hand-ported to Swiper.
Quickstart database hardening (Phase 5)
- Phase 5f: Update Sites Manager cache flushed (58 stale entries cleared); 41 enabled / 10 disabled update sites surveyed.
- Phase 5f.2: Pending extension updates applied. Akeeba Backup Core upgraded 9.9.5 → 10.3.3, Weblinks Extension Package upgraded 4.3.1 → 5.1.0 via Joomla CLI
extension:install --url= on the donor before quickstart export. Customers installing the 5.4.0 quickstart get current third-party extensions out of the box rather than 5–10 pending updates as their first action. Now a standard pre-export step for every VMT template modernization.
- Phase 5g.1: Global check-in across 22 J5 tables (1 stale check-out cleared).
- Phase 5g.2: 11 condition-based postinstall messages hidden (5 customer-actionable kept);
robots.txt synced to robots.txt.dist; all 11 user groups set to text-filter NH (No HTML, XSS hardening).
- Phase 5j: Article hits counter reset. All
#__content.hits values reset to 0 in the donor database before quickstart export. Rationale: the hits counter accumulates during development on the donor site and ships as preloaded view-counts inside the customer's freshly-installed quickstart, which is misleading at best and indistinguishable from third-party tampering at worst. Resetting the counter is now a standard pre-export step for every VMT template modernization.
- Phase 5i: Footer year bumped to 2026 and centered.
- Phase 5k: 100 template overrides marked as checked-in.
Removed
Legacy Bootstrap purge (Phase 3b)
- Deleted top-level
css/bootstrap.css (119 KB) — BS2-era full stylesheet, no longer referenced by index.php.
- Deleted
css/bootstrap/ subdirectory (7 BS2 split-files, ~295 KB).
- Deleted
js/bootstrap.min.js (25 KB) — BS2-era jQuery-dependent JS bundle.
- Patched
css/print.css — three legacy /media/jui/css/bootstrap* @import lines (which had been 404-ing since the modernization started; the JUI library was removed in Joomla 4) collapsed to a single import of J5's BS 5.3.8 bundle.
- Total removed: ~440 KB of legacy Bootstrap 2 artifacts.
Legacy /media/jui/ icon residue purge
- Removed IcoMoon
@font-face declaration and .editor .icon-* selectors that referenced the deprecated /media/jui/fonts/IcoMoon.* font files (no longer present in Joomla 4+).
- Removed
.edit .icon-ok / .icon-cancel rules referencing the deprecated /media/jui/img/glyphicons-halflings-white.png sprite.
- Removed
.icon-calendar / .icon-eye rules referencing broken local-file image refs.
- Swapped VirtueMart cart
+ / − buttons (.vm2-add_quantity_cart, .vm2-remove_from_cart) from broken local-file image refs to FontAwesome glyphs (\f067 plus / \f068 minus), using FontAwesome's web font which is loaded by J5 core — zero new asset weight.
Notes
- Server PHP version when this release was prepared: PHP 8.3.31.
- Joomla: 5.4.6 (current stable as of 26 May 2026). VirtueMart: 4.6.8 Pro (Revision 11258, March 12 2026). Echo template: 5.4.0 (this release).
- Maxdebug
error_reporting audit on the Echo Quickstart's default install shows zero PHP warnings, notices, or deprecations originating from Echo template code.
Package format
- Standalone template:
pkg_echo-5.4.0.zip — Joomla package wrapper that installs the tpl_echo template extension and registers it under the package manager.
- Quickstart bundle: Echo-J5.4.6-Quickstart — complete Joomla 5.4.6 install with VirtueMart 4.6.8 Pro and Echo pre-loaded as the active template.
- Quickstart database hardening — base install + donor REPLACE INTO pattern with leading TRUNCATE of 10 structural tables before donor data loads, eliminating the wizard-install corruption pattern where J5.4+ base-install rows persisted alongside donor rows.