Usage
The box in the page module
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 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.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.options - 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.
- A header that an editor turned into a
divis 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
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: H1 to H6 and DIV.
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
- 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 settingdefault(H2 in the default setup). Decides the HTML tag of the header.Header Type - Type (
header_)layout - The core field. It only decides how the header looks: the CSS class
ce-(N is 1 to 6). "Default" and "Hidden" set no class; "Hidden" hides the header.headline- layout- N - Subheader tag (
subheader_)tag - Like Tag, for the subheader. The default is One level below the header: an H1 header
has an
h2subheader, H2 anh3, and so on; below H6 and under adivit is adiv. For content without a tag of its own this is whatfluid_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.styled_ content
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), the subheader follows the header: one level below its tag.
Several 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
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_ and subheader_ 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
- 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 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.