Skip to main content
Jahia Store
EN

Classic Templates

community
Download 0.10.1

Information

Module ID
classic-templates
Group ID
org.jahia.modules.javascript
Status
community
Category
Demo templates and components, Pre-built templates and components, Content Features
Author
Stephane Monier
Developer website
https://github.com/smonier
Requires Jahia
8.2.1.0
Released
2026-11-03
Source
https://github.com/Jahia/classic-templates
Tags
  • templates
  • themes
  • accessibility
  • javascript modules
  • page builder

A themeable JavaScript template set for corporate and institutional websites: header, three-level menu, footer, breadcrumb and twenty reusable sections, news and articles, members-only content, a consent banner, ten themes in light and dark, accessible (WCAG 2.1 AA, RGAA 4.1.2), bilingual, with visitor strings in Portuguese too.

Classic Templates is a Jahia JavaScript template set with the standard building blocks of a corporate or institutional website. Everything a visitor reads is contributed content, editable in Page Builder and jContent in every language of the site, and the look comes entirely from CSS design tokens: a site switches theme, or light and dark, from its settings, with no code change.

What you get

  • Complete site chrome: a header with logo, brand name, a menu built from the page tree three levels deep, utility links, an optional search box and a language switcher, on one row or two (the menu on its own row), with an optional brand caption; the menu as dropdowns or as a mega menu, where each top-level page can carry a promotion; a footer with logo or tagline, link columns, legal links and social links shown as their network's icon; a breadcrumb trail in its own band; a network bar linking the sites of a group. Header and footer are shared by every page and edited on the home page.
  • Reusable sections: hero banner and hero carousel, image and text, rich text, columns, card grid (cards, icon tiles or a logo strip), accordion, tabs, key figures, quote, link list, content list, notice bar, site map, sign-in form and a free zone. Every section can end with an optional call to action.
  • News and articles: stored in content folders, each with its own page, listed as cards or compact rows by content lists that filter by folder, category and language. Breadcrumbs go through the page that lists them, and each item page lists its categories and tags.
  • Consent and audiences: a consent banner asks visitors once whether they accept tracking and, on a site running jExperience, switches its tracking with their choice; any call to action can be shown to everyone, to visitors who are not signed in, or to signed-in visitors only.
  • Ten themes: Classic, Ocean, Terracotta, Horizon, Sage, Slate, Graphite, Signal, Live and Portal, each in light and dark, chosen per site. Another module can add a brand theme of its own to the site settings, with no release of the template set. The breadcrumb band and the footer take their own colours. Visitors get their system's scheme unless the site forces one. Call-to-action buttons can take their own colour, apart from links and navigation. Contrast is checked for every theme and scheme.
  • Sign-in entry: an optional "Sign in" in the header's utility bar, with "Register" beside it when the site has a registration page, replaced by the visitor's name and "Sign out" once signed in, built from the platform's own login and logout routes. It can open a page of the site holding the sign-in form, so visitors sign in without leaving the site. The header stays one cached fragment.
  • Members-only content: a news item, an article or a page (with its sub-pages) can be reserved for signed-in visitors. Visitors who are not signed in get its public face (title, teaser, image and its opening paragraphs), a "Members only" badge, a notice with a sign-in form and "Create an account" instead of a "page not found", and see the whole content once signed in. Lists and cards show the badge on reserved items.
  • Accessible by default: audited against WCAG 2.1 AA and RGAA 4.1.2. Skip link, landmarks, strict heading order, keyboard menu, visible focus, reflow at 320 px, scrollable tables, carousels without autoplay by default, a site map as the second navigation system.
  • Search-engine ready: one heading 1 per page, titles and descriptions, image alternatives, and schema.org structured data (JSON-LD) on every page, including the breadcrumb and news and articles. With Augmented Search, the text of sections is found with its page; a site setting keeps a private site out of search engines.
  • Helpful in Page Builder: in edit mode only, notes tell editors what the page cannot show: a missing description or alternative text, a hidden title, content reused from elsewhere, what a content list found, with a link to its folder in jContent.
  • Ready to share: Open Graph and Twitter card tags on every page, so a shared link shows its title, description and an image; the image comes from the page's SEO panel, its item or hero, or a default share image set on the site.
  • Open to other modules: the free zone takes components of other modules (Formidable forms, a FAQ, a media gallery, a store locator) and a token bridge makes them follow the site's theme.
  • Bilingual out of the box: every editor label, tooltip and visitor-facing string is available in English and French, and the visitor-facing strings in Portuguese too. In a language added later, a page not translated yet keeps its default-language title in menus, links and the breadcrumb.

Two pre-packaged demo sites import from Administration > Projects: Classic Templates pre-packaged website, a complete bilingual example site (19 pages, news and articles), and Skylantern Airways pre-packaged website, a fictional airline (36 pages with destinations and fares) built with the template set and its classic-travel companion module.

Documentation for editors and integrators, one page per component: github.com/Jahia/classic-templates/docs.

Screenshots

Dependencies

Depended on by

Nothing depends on this module.

Versions

0.10.1Download

0.10.1

  • Visitor strings in Japanese and Simplified Chinese: pages in either language no longer show English labels or raw keys in the header, search, sign-in and consent banner.

0.10.0

  • The header's menu can show a menu built in jContent > Menus with the Menu Manager module instead of the page tree: set "Menu source" to "Custom menu" and choose the menu. The dropdown and mega menu styles stay the same, and the mega menu shows the promotions of the menu's top-level items. Without Menu Manager, or when the menu cannot be read, the header shows the page tree.
  • The page, header and footer areas accept navigation components of other modules, such as Menu Manager's Menu component.
  • Fix: in Page Builder, a social link shown as an icon whose page is gone says so in the edit note, like the other links.
Requires Jahia 8.2.1.0Released 2026-11-03

New Features

  • Images render through JImage of javascript-modules 1.3.1: each one lists resized versions (srcset and sizes) so a phone can load a smaller file, which takes effect with a DAM or an image resizer. The template set, classic-media and classic-travel now require javascript-modules-engine 1.3. A Cloudinary 3D model chosen as an image shows in its own viewer

Bug Fixes

  • The release checklist counts the packages, version files and release assets added since 0.7.0 (classic-media, the Orvane portal site)
Requires Jahia 8.2.1.0Released 2026-10-29

New Features

  • New consent banner (ctpl:consentBanner) for the footer area of the home page: visitors accept or refuse tracking once, a Privacy settings button after the footer opens it again, and on a site running jExperience the choice switches its tracking on or off for the visitor
  • A call to action can be shown to everyone, only to visitors who are not signed in (a "Sign in" button disappears once the visitor signs in) or only to signed-in visitors ("Show the button to", on every call to action); the section around it stays cached for everybody
  • Page Builder says what the page cannot show: one shared edit note in three looks (explains, not shown on live, accessibility with a label) for every component of classic-templates, classic-media and classic-travel; above the page, that the header and footer are edited on the home page, a missing page description, a browser title longer than search results show, a site hidden from search engines, a hidden page title; on content pasted as a reference, where it comes from and how many places reuse it, or that it is unpublished or gone; in rich text, headings renumbered because they used level 1 or skipped a level; a content list's panel and the news ticker's summary link the folder they list to jContent (new tab)
  • Themes can colour the breadcrumb and the footer on their own: the breadcrumb sits in a full-width band (--ctpl-breadcrumb-* tokens: surface, text, link, current page, padding) and the footer maps --ctpl-footer-* tokens (surface, text, muted text, rules, link hover, a bottom edge) onto the page roles inside it, so a theme can draw a dark breadcrumb band or a dark footer. The defaults repeat the page colours: nothing changes for existing themes. The site footer gets a Footer logo (shown instead of the site name, which becomes its text alternative), and its tagline keeps its line breaks, for an address.
  • Members-only items show the opening paragraphs of their body before the members notice (2 by default, set per item, never the whole body; the rest is not sent), and the notice offers "Create an account" when the site header names a registration page; classic-media stories and sessions can be switched to "Members only" too
  • The site header gets a Header layout (one row as before, or two rows: the brand, the search box, the utility links, the account entry and the languages on top, the menu on its own full-width row below) and a Brand caption (a short line beside the logo, such as the company's tagline, part of the link to the home page, shown from 768 pixels wide). The account entry offers Register beside Sign in to visitors who are not signed in when the header names a registration page.
  • Item pages (news, articles, stories, sessions) list their categories under Topics and their tags under Tags; each tag links to the site's search results for it when the site header names a Search page (new setting); sessions show their topics and tags too
  • The labels built into the template set and classic-media views (skip link, menu, sign-in, members-only notices, breadcrumb, list panels, carousel, share, agenda, search and more) now come in European Portuguese (pt) besides English and French, and a unit test keeps each pt.json and fr.json on exactly the keys of en.json; editor labels stay English and French
  • classic-media: a brief gets a Submission form (a Formidable form, shown on the brief's page while the brief is open and replaced by "This brief is closed." once it is closed), and any picture or video of the media library can carry a Credit (ctmdmix:credited, offered by jContent on every file) that stories and briefs show as a "Photo: ..." caption under the image (EN, FR, PT)
  • classic-media gets the content of a supplier portal: briefs (a page with description, deadline, media wanted, quantity, intended use and a mood picture, and a card), submissions (a supplier's files with caption, credit, licence and the picture desk's follow-up, shown as a status card with the status as text and a mark), and two lists computed for the visitor who reads them (a brief that a visitor may not read is absent from their list, and each supplier sees their own submissions); the lists and the status card are cached per user
  • New package classic-media (ctmd): people, stories in seven formats (news, feature, opinion, interview, report, video, podcast) with byline, share, transcript, related stories and members-only reports, story feeds by topic and format, event sessions with an agenda (day tabs, filters, event time zone), a speaker gallery with an A-Z index and the key dates of an event, and a search results section on Augmented Search, for media groups running an editorial hub and an event site
  • classic-media sends standard jCustomer events when jExperience tracks the visitor (after consent where the site asks for it): video and podcast plays, shares, feed and agenda filters, and search queries, so segments and dashboards can use them; nothing is sent without jExperience or before consent
  • New mega menu style for the main navigation ("Menu style" in the header's navigation: Dropdown or Mega menu). On large screens a top-level page opens a full-width panel with its subpages in columns, their own subpages listed under each, and the page's new Menu promotion (ctplmix:navPromo, an option of the page's edit form: image, title, text and a call to action) beside them; on small screens it works like the dropdown, the promotion under the list. Same markup, script and keyboard behaviour as the dropdown.
  • New network bar (ctpl:networkBar) for sites that belong to a group: in the home page's header area, above the site header, it shows the group's name and a link to each site of the group, the current site marked for everyone, screen readers included
  • A ctplShell view of a page renders the template set's page shell (header, breadcrumb, page title, footer, theme, members-only gate) around a body view that another module names, so a project can offer a structured template next to the free ones
  • Two new pre-packaged sites, Orvane Signal and Orvane Live, the editorial hub and the annual convention of a fictional media group, built with the template set and classic-media; unlike the other pre-packaged sites they keep the content of the add-on modules they show (jsfaq, js-media-gallery, js-store-locator, formidable-elements), declared as dependencies, and they link to each other
  • The Orvane pre-packaged sites take their form actions from the formidable-extended-actions modules, outside the Formidable core: Signal and Live enable formidable-accounts (Create account, Sign in), the portal enables formidable-content (Create content, its mapping stored as one document) and formidable-redirect (the redirect to My submissions after an answer)
  • A third pre-packaged Orvane site, Orvane Portal: the gated portal where the group's photo and video suppliers answer its briefs, with its access rules (closed pages and per-company folders), briefs, earlier submissions and the submission form (Formidable's Create content action). Orvane Signal and Orvane Live are re-exported with the "Work with us" link to it, the header's account entry and Signal's Supplied library.
  • The Orvane pre-packaged sites now show personalisation with jExperience: a consent banner, personalised sections on both home pages, an A/B test of the Live hero's call to action and form answers written to the visitor profile; their segments, rules, scoring, goals, personas and audience dashboard ship alongside and load with scripts/load-jcustomer.py, which resolves the goals' forms on the target instance
  • The pre-packaged Orvane sites carry the showcase's v3 and v4 content: tags and interests, members-only teasers on reports, features and sessions, register pages (Formidable accounts), Orvane Live in Portuguese, Signal stories reused on Live's home, the header search box, the members' "Welcome back" variant and the Reports page A/B test; the jCustomer items gain the account goals (in the shape jExperience's Goals screen lists), the sign-in counter and the member segment. The export leaves out global groups and users, which a granted role pulls into site-privileged, and Augmented Search's indexation timestamps on the site node, which made the import of a site fail on an instance running Augmented Search.
  • classic-media's search section gets faceted search with autocomplete: filters for topics (a tree), tags, format, type and, for a network search, site, with counts, removable chips and paging without a reload (Elastic Search UI core behind a connector of our own to Augmented Search; without JavaScript the same filters are a GET form); tags on item pages now link to the search page's tag filter (?tag=); each result shows its own summary (SEO description, else teaser) with the searched words highlighted, the index excerpt only for items without one; the story format and the session type become facetable: Augmented Search needs content.mappedNodeTypes to list ctmd:story,ctmd:session,ctmd:person,ctplmix:editorialItem.teaser and a full reindex after upgrading. The site header gets an optional search box with suggestions
  • Page sections, and the items holding their text (cards, accordion entries, tabs, key figures, key dates), are now editorial content (jmix:editorialContent). With its default settings Augmented Search indexes their text with their page, so a search finds a word of a section body, a card or an FAQ answer; before, only titles and descriptions were searchable unless the site's Augmented Search configuration listed classic-templates types. jContent also lists them in a page's content and offers Translate on them. The header, the footer and the consent banner are not editorial content: their labels are not indexed with every page. No content needs changing; run one full Augmented Search reindex after the upgrade.
  • New site setting "Hide from search engines" (ctplNoIndex, off by default) in the Site look section: when ticked, every page of the site carries a robots meta tag with noindex and nofollow, read from the page's own site, so a private or gated site stays out of search results. Nothing changes in the output while it is off. English and French labels and tooltips
  • The footer's social links show the network's icon (LinkedIn, YouTube, X, Facebook, Instagram, GitHub, TikTok, Bluesky, Threads, Pinterest, Vimeo, WhatsApp), recognised from the link's address: a new icon view of ctpl:link and social view of ctpl:linkList. The link's title, else the network's name, stays its accessible name; a link to another address shows as text. Icons from Bootstrap Icons 1.13.1 (MIT).
  • classic-media: a submission has a page of its own, opened from the title of its status card (every fact, the caption, the photos and the other files sent, the picture desk's note), readable only by the supplier's company and the desk; before, the card's only link opened the brief's page and its answer form
  • New theme Portal for gated work portals (a supplier or partner area): cool light greys, sans-serif headings, sharp corners and almost flat shadows, a restrained petrol blue for links and buttons and the group's vermilion kept for key values only, checked for WCAG 2.1 AA contrast in light and dark. The site settings gain a Portal choice, with English and French labels
  • A theme can now come from another module: a module that declares a site mixin extending ctplmix:themeProvider adds its theme as an option of the site's edit form once it is enabled on the site. Switched on, it replaces the theme chosen in Site look (light or dark still applies): the page carries the mixin's local name as data-ctpl-theme and loads that module's stylesheet after the template set's. A brand theme no longer needs a release of the template set.
  • Two new themes: Signal (warm paper neutrals, serif headings, cobalt links, vermilion buttons, sharp corners) for news and magazine sites, and Live (dusk neutrals, heavy sans-serif headings, violet links, jade buttons, round shapes) for event sites, both checked for WCAG 2.1 AA contrast in light and dark

Bug Fixes

  • The header's account entry now shows the signed-in visitor's name and "Sign out" for site members and other visitors without a back-office role. On a stock Jahia, GraphQL is open to privileged users only, so their entry kept saying "Sign in"; the template set ships a scope (org.jahia.bundles.api.authorization-classic-templates.yml) that lets the site's pages ask currentUser, on no node: no content becomes readable through GraphQL.
  • A brief's answer form is easy to find and styled like the site's other forms: the brief page has an "Answer this brief" button under its facts that leads to the form, each open brief card links to it, and the form is rendered in the template set's add-on scope (it kept the browser's default fields). Radios and checkboxes of a Formidable form now sit beside their labels instead of being drawn as full-width text boxes.
  • After Accept or Refuse in the consent banner, the page's copy of jExperience's tracking switch (digitalData.wemInitConfig.activateWem) now follows the choice at once. It kept its page-load value until the next page, so a visitor who accepted on a page holding a Formidable form mapped to the jExperience profile sent the form without its answers reaching the profile.
  • classic-media: in edit mode, a story feed's summary names the categories it filters on, the ones picked on the feed and the page's own ("Only the stories filed under AI and automation or their subcategories"); before, a feed filtered on a picked category read like one that lists everything
  • The release checklist says the demo replication kit leaves every running development build (SNAPSHOT) in place, whatever its version, so a release never replaces the demo instance's build from a demo branch; it also says that the release commit's integration tests fail by design (the test provisioning installs development builds only) and that the next development version's run is the check
  • The link of a page's menu promotion can now be set from the page's edit form: Page of this site and Web address fields come with the promotion, and Link says which one the button uses. Before, choosing a link type on a page saved the choice and showed no field to pick the page or type the address (Jahia's link fields attach to content only, not to pages).
  • The release checklist names the next development version as the next minor (X.(Y+1).0-SNAPSHOT), as every release so far has done
  • The sanitizer's linear-time unit test (template set, classic-media, classic-travel) compares the time taken on an input and on one 8 times as long instead of holding each input under one second: it failed once on a slow GitHub Actions runner (1012 ms) although the code was fine, and it still fails a sanitizer that turns quadratic
  • The sign-in form asks for an "E-mail or username" with a hint under the label, instead of a "Username" visitors who registered with their e-mail did not recognise; the refusal message names all three
  • A story feed set to "Stories of this page's topics" now lists the stories filed under the page's categories and under their subcategories, as picked categories already did. A topic page whose stories are all filed under its sub-topics listed nothing.
Requires Jahia 8.2.1.0Released 2026-10-29

New Features

  • Members-only content: news items and articles can be reserved for signed-in visitors (the optional "Members only" section of their edit form), and pages and their sub-pages through a new "Members only" page option. Visitors who are not signed in get the title, teaser and image (item) or the title (page), a notice and a sign-in form instead of the body or the sections, and cards and lists show a "Members only" badge. New "Sign-in form" section (ctpl:signIn) that signs visitors in without leaving the site, and a new "Sign-in page" option on the site header so the sign-in entry opens that page instead of the platform's login screen

Bug Fixes

  • The package READMEs describe what each package holds today: the four packages, the page templates and page options, members-only content and the sign-in form, the title shown in the default language for untranslated pages, every progressive-enhancement script and the sign-in island, the unit-tested helpers, both pre-packaged sites (their theme, what each leaves out, Skylantern's inactive Chinese language) and the Skylantern example for classic-travel
  • The release checklist is documented, from the changelog and the version to the GitHub release, the demo replication kit and the Jahia Store submission pack
  • The release documentation now says when to push the next development version after a release: once the release build has started, since a build still waiting would be replaced
  • yarn lint in the template set and classic-travel now checks the SonarQube rules that kept failing pull requests (sort comparators, unnecessary type assertions, object stringification, globalThis, replaceAll, code points, String.raw, at, re-exports, single push, cognitive complexity, nested conditionals and template literals), so the Static checks job fails before Sonar does; the rules ESLint cannot check, and how to write each case, are listed in .agents/context/sonar-rules.md. The few existing cases were fixed with no change to the rendered pages
Requires Jahia 8.2.1.0Released 2026-10-09

New Features

  • Added a Graphite theme (true charcoal neutrals with crimson call-to-action buttons and emphasis, sans-serif headings and squared corners), in light and dark and checked for WCAG 2.1 AA contrast; choose it under Site look > Theme

Bug Fixes

  • Pull requests that change no package (documentation, changelog, harness, demo scripts) no longer wait for the build and the integration tests, and a newer run cancels an obsolete one
  • The demo instance deployment runs only from the demo branches, so a change merged into main no longer replaces the build shown on the demo instance
  • The demo seeding script works against a Jahia Cloud cluster with a single session, and on a newly created site it now sets the default share image and publishes it in every site language
Requires Jahia 8.2.1.0Released 2026-10-09

0.4.0

  • classic-travel and a pre-packaged demo site now ship from this repository with the template set, at the same version: install classic-templates-prepackaged-website and import the classic-dev demo site from Administration > Projects, with no other module needed
  • Every page carries Open Graph and Twitter card tags (title, description, image) so shared links show a preview; the image falls back from the page's SEO image to its item or hero image, then to a new Default share image site setting and the logo
Requires Jahia 8.2.1.0Released 2026-10-02

0.3.1

  • Pages take their theme, title, header, footer, breadcrumb and structured data from their own site, also on an instance where several sites keep the server name localhost (Jahia Cloud).

0.3.0

  • Hero carousel: hero banners shown one at a time, stacked without JavaScript and in edit mode, autoplay off by default with a pause button.
  • Notice bar: the latest news items or articles as dated links, for the shared header or the top of a page, with an optional label, a "view all" link and a close button.
  • Breadcrumbs of news items and articles go through the page that lists them, set on the folder; the first crumb always reads Home.
  • Content lists and notice bars can label each item with its first category.
  • Labels no longer show their raw key on pages that also show components of other modules.

0.2.0

  • Accordion and tabs sections; card grids as icon tiles or a logo strip; the Horizon theme and an emphasis colour in every theme; tables in rich text scroll on small screens.

Full history: CHANGELOG.md.

Requires Jahia 8.2.1.0Released 2026-10-02