← Documentation
Developers and integrators

Templates and labels

HTML templates, system labels, and module variables.

Verified for version: FoxCoreCMS 1.1.1Updated: 26.09.2026

A minimal HTML template

A regular file in the selected design directory can contain doctype, html, head, and body. Put [#title#] in title, [#description#] in meta description, and [#H1#], [#breadcrumbs#], and [#content#] in the main body. Use root-relative asset URLs such as /design/my-site/css/style.css so CSS also works on nested pages. PHP inside the HTML file is not executed.

The scanner discovers ordinary [#name#] labels automatically. Names start with a Latin letter and may contain letters, digits, underscores, hyphens, and periods, to a maximum of 100 characters. Reopen the page editor after changing the file so it rescans the labels. System labels title, description, keywords, H1, home_link, lang_menu, page_header_media, and breadcrumbs are filled by the core.

Choosing a label source

An ordinary label can inherit from its parent page, be disabled, use the visual editor or HTML code, or render an active module instance. Selecting a text mode reveals the corresponding editor button. Selecting a module opens that exact instance. The button is hidden for Inherit and Do Not Render.

Use the visual editor for ordinary content. Use HTML code for blocks whose appearance depends on exact nesting and CSS classes. HTML mode does not transform markup when opening, switching language, or saving, but the server filter keeps only safe semantic elements and removes executable content.

Variables and named sections

Inside a module template variables look like %name%. Their available names depend on the module and are listed below its file editor. The current compatibility layer inserts values as HTML; account for the context before using unchecked data inside JavaScript, CSS, or HTML attributes.

Sections begin with a comment such as <!-- @wrapper --> or <!-- @item -->. Repeating blocks and social buttons use wrapper and item; galleries use content or wrapper and rows or item; sliders use content and rows or item; menus use item. Menu items offer %id%, %url% or %link%, %title% or %text%, while %children% renders a ready-made submenu.

Breadcrumbs and languages

Breadcrumb templates support begin, link/item, activelink/current, delimiter, and end sections. Variables include %id%, %position%, %link%, %url%, %text%, and %title%. In Schema.org BreadcrumbList markup, each step must be a separate ListItem container with itemprop=itemListElement, containing a link with itemprop=item. Only the final step may omit the item link. Do not put itemListElement on the link itself.

Translated values are entered in the administration panel; a design normally shares one HTML file. The core's file loader supports language suffixes for separate static variants, but the current public site selects the HTML file from the page structure and fills it with translated values. Labels render in two passes, so a system label inside a module's output is resolved as well. Avoid cyclic label references.

Site templates

HTML files in the selected design define page markup. PHP in these files is not executed. Replace static values with system labels such as [#title#], [#description#], [#H1#], [#breadcrumbs#], and [#content#]. Assign the appropriate template in each page editor.

Binding labels

In the control panel, a page label may inherit a value, be disabled, contain content from the visual editor or HTML, or render an active module instance. Changing the file template does not erase saved label values.

A page label such as [#name#] and a module-template variable such as %name% are different mechanisms. The former inserts content into a page; the latter is resolved while rendering a specific module. Use variables in the proper HTML context; do not put unchecked data directly into JavaScript or CSS.

Module template sections

Sections are marked with HTML comments: <!-- @wrapper --> defines the overall wrapper and <!-- @item --> defines one repeated item. A menu may use %id%, %url%, %title%, and %children%. Breadcrumb templates have separate sections for the beginning, link, active item, delimiter, and end.

Translated field values are edited in language tabs in the control panel, while one file template can be shared. Check the result in every active language and on pages at different URL depths.