---
title: "Usage"
manual: "Headliner"
version: "main"
permalink: "https://docs.typo3.org/permalink/twtgroup/headliner:usage@main"
source: "Usage/Index.rst"
rendered: "2026-11-11T13:53:21+00:00"
---

# Usage {#usage}

## The box in the page module {#usage-box}

Open a page in the **Layout** module. Above the content the box **Heading structure** shows the
headings of the page as a hierarchy. Every heading has a pill with its tag; its colour tells the level.

-   A **summary** in the header says **Structure OK** or how many problems there are.
-   Headings with a problem are underlined and carry a badge: **The page has no H1**,
    **More than one H1**, **Skipped heading level** or **Empty heading**.
-   A **subheader** has the badge **Subheader**. It belongs to the content element of its header, which the
    group (see below) shows.
-   A heading from the **text** of a content element (for example RTE content) has the badge
    **RTE**. If the site setting [headliner.editRteHeadings](https://docs.typo3.org/permalink/twtgroup/headliner:configuration-editrteheadings@main) is on (it is off by default), its tag can be changed in the box too, to the headings the editor of the text offers (the option
    `heading.options` of the RTE configuration, H2 and H3 in the default preset): the tag is changed in the
    stored text of the element, at the place of the heading. This works if the heading is found there at the place the
    order of the headings says, with the same level and text. If it is not (the text was changed meanwhile, or the
    heading comes from somewhere else), the box says so and loads the structure again; headings that cannot be found
    are only a label. The user needs the rights to edit the element.
-   A heading in a **record of a collection** (a card of a Content Block, an entry of a child table) has the title of
    the table as badge and a select for the field with its tag. A heading in the rich text of such a record has the badge
    **RTE**, like one of a content element. It is saved in the record itself, with the rights of the backend user
    for that table. How a template makes this possible is in [Content Blocks](https://docs.typo3.org/permalink/twtgroup/headliner:integration-content-blocks@main).
-   A header that an editor turned into a `div` is listed too (its text is paler), so it can be turned back.
-   The headings of one content element (its header, its subheader and the headings of its text) form a **group**: a
    coloured bar runs along the left edge of their rows, and hovering one of them marks the others and outlines the
    element in the page module below.
-   The box can be **collapsed**. The state is saved for the backend user and the box is rendered that way right away.
    A collapsed box stays collapsed on every page, and its structure is loaded all the same, so the summary still shows
    the problems of the page.
-   The box **updates itself** when content changes in the page module: if an element is hidden or shown, or moved by drag
    and drop, the structure is loaded and checked again.

## Changing a tag {#usage-edit}

For headers of content elements the pill is a select. Choose another tag: it is saved with the rights of the backend
user and the box is checked again.

![The select of a heading in the box with the tags H1 to H6 and DIV](../Images/change-tag.png)

The text of a header is a link. It opens the edit form of its content element in the side panel, like the edit button of
the page module itself. For a heading from the text of an element, it opens that element.

## The fields of a content element {#usage-fields}

-   ****Tag** (`header_tag`)**

    H1 to H6 or `div`, or **From the layout (as before)**, which is the default and means: layout 1 to 6 is H1 to
    H6, otherwise the tag of the setting `defaultHeaderType` (H2 in the default setup). Decides the HTML tag of the header.

-   ****Type** (`header_layout`)**

    The core field. It only decides how the header looks: the CSS class `ce-headline-layout-N` (N is 1 to 6).
    "Default" and "Hidden" set no class; "Hidden" hides the header.

-   ****Subheader tag** (`subheader_tag`)**

    Like **Tag**, for the subheader. The default is **One level below the header**: an H1 header
    has an `h2` subheader, H2 an `h3`, and so on; below H6 and under a `div` it is a `div`. For content without a tag of
    its own this is what `fluid_styled_content` does with the layout; choose a tag in **Subheader tag** if a
    subheader is to stay as it is while the tag of its header is changed.

The subheader has no layout of its own: it has the layout class of its header, and the layout "Hidden" of the header
hides both.

If the subheader tag is switched off for a site (see [Configuration](https://docs.typo3.org/permalink/twtgroup/headliner:configuration@main)), the subheader follows the header: one
level below its tag.

## Several languages {#usage-languages}

The box follows the page module:

-   In the layout view it shows the structure of the one language the page module shows.
-   In the language comparison it has one section per column: the default language and the selected translations. Each
    section has the flag and name of its language and its own status; the summary counts all problems. The sections
    stand side by side and have a minimum width, so the box scrolls sideways if they do not fit.

## Rights {#usage-rights}

The select and the link appear only for backend users who may edit the element, with the rules of the page module's own
edit buttons:

-   an admin always;
-   an editor needs the right to modify content (**tt_content**), edit rights for the content of the page (which
    must not be locked) and edit access to the record.

Changing a tag also needs the permission for the field. `header_tag` and `subheader_tag` are "exclude" fields: allow
them in the backend user group under **Access Lists > Allowed Excludefields > Page Content**. Without that
permission the tag is shown as a label.

## What is checked, and what is not {#usage-limits}

-   The page is rendered in the running PHP process, as a visitor would get it. There is no HTTP request, so a firewall,
    Basic Auth, TLS settings or a CDN in front of the site do not matter.
-   The **content** of the page is checked: the elements the site setting [headliner.contentSelector](https://docs.typo3.org/permalink/twtgroup/headliner:configuration-contentselector@main) matches (empty by default: then the whole page). Headings in the header, the menu and the footer are shown
    very pale (the tooltip says **Outside the content**). Only their H1 counts, also where an editor cannot change
    it: an H1 in the header and one in the content are two H1, and an H1 in the header is the H1 of the page. Their other
    levels cause no problem, but an empty heading is a problem wherever it is. If the page has no such element, the whole page is checked.
-   A **hidden** page is rendered too, so you can check its structure before it is published. The box shows how the page
    will look when it is published. Hidden content elements are not part of it, a visitor would not see them either.
-   A page with a **start or end time** is rendered at a time when it is published: a page that starts later at its
    start time, a page that has ended shortly before its end time. Start and end times of parent pages that extend to
    their subpages count too. If the end time is not after the start time, there is no such moment and the box says that
    the page can never be shown. Content elements with their own times are judged at the same moment, so one
    that starts later is missing in the preview.
-   A page for **frontend user groups** is rendered as a logged-in user who is a member of the groups of the page and of
    its parents that extend to their subpages. A page that is only for visitors who are not logged in ("hide at login")
    is rendered as a visitor. If the groups of the page and of its parents exclude each other, the box says that the
    page can never be shown. Content elements with their own groups are judged for the same user.
-   In a **workspace** the box shows the versions of the workspace the backend user works in, like the page module does.
    The versions of the page, of its translation and of its parents count for the times
    and groups, too. Changing a tag there changes the version, not the live record.
-   Only standard pages are checked.
