A position is a named slot where a module is published. Corpus declares thirty-six of them: the twenty-nine of the layout, listed here, plus six for the article templates (article-1 to article-6, see Article templates) and three for the error pages.
A position is not a fixed place in the page. It is a name, and the Layout decides where that name appears. You can perfectly well put banner in the footer: just choose it in the Position field of the row concerned.
That is why the list below gives the intended use, not a constraint.
The positions and their intended use
| Position | Intended use | Where the Layout puts it by default |
|---|---|---|
topbar-left |
Social links, a short reminder | Information bar, left side |
topbar-right |
Phone, email, opening hours | Information bar, right side |
topbar |
Inherited from Cassiopeia, tools, quick contact | None, to be repointed |
header-left |
The area left of the logo in the header | Header, slot Header 1 |
menu |
The main menu, folded behind a button on phones | Navigation bar |
search |
The search module | Band below the navigation |
breadcrumbs |
The breadcrumb trail | Between navigation and content, always |
banner |
A full-width banner | Header, slot Header 2 |
below-top |
A band under the header | None, to be chosen in a row |
top-a |
First top row | Top sections, row 1 |
top-b |
Second top row | Top sections, row 2 |
top-c |
Third top row | Top sections, row 3 |
top-d |
Fourth top row | Top sections, row 4 |
main-top |
Inside the content column, above | Content, top row |
sidebar-left |
Side column, on the left by default | Content, column 1 |
sidebar-right |
Side column, on the right by default | Content, column 2 |
main-bottom |
Inside the content column, below | Content, bottom row |
bottom-a |
First bottom row | Bottom sections, row 1 |
bottom-b |
Second bottom row | Bottom sections, row 2 |
bottom-c |
Third bottom row | Bottom sections, row 3 |
bottom-d |
Fourth bottom row | Bottom sections, row 4 |
footer |
The footer, upper row | Footer |
footer-bottom |
The footer, lower row, obligation links | Footer |
social-links |
Social networks | None, to be chosen in a row |
social-media |
Social networks, second set | None, to be chosen in a row |
float-pos |
A floating block, out of flow | Rendered as is, with no chrome |
debug |
Joomla's debug bar | Bottom of the page |
error-403 |
Modules for the "forbidden" page | |
error-404 |
Modules for the "not found" page |
The distinction that matters: page row or content row
This is the most useful distinction on this page.
A top or bottom section, top-a to top-d, bottom-a to bottom-d, takes the full page width. It lives outside the content, before or after it, and ignores the side columns.
A content row, main-top, main-bottom, stays inside the component's column, above or below it, whatever side columns are published. That is what you want for an alert banner, a reminder or a form that must stay aligned with the article.
The two look alike as long as no side column is published. As soon as there is one, the difference is obvious.
Three positions apart
breadcrumbs cannot be moved. The trail always sits between the navigation and the content, in its own band. This is deliberate: it says where you are, so its place is against the navigation, which says where you can go. Placed inside the content section, it inherited that section's breathing space and floated in the middle of nothing.
float-pos comes out with no chrome at all: no frame, no module title. You style whatever you publish there. Useful for a consent banner or a call button.
It is also the position for the popup, for a precise reason: Corpus renders it at the end of the page, with no container around it. A module set as a panel inside a side column would disappear with that column when it folds away on a phone, panel and icon alike. See Content modules.
debug shows nothing while Joomla's debug mode is off.
Hiding content on phones
Three levels, depending on what you want gone. The threshold is the same everywhere: the one where the menu folds behind its button.
One module, Advanced tab, Module Class Suffix: desktop-only. The word combines with the others: no-card desktop-only. Its opposite is mobile-only.
In the three top rows, only those two classes get through. The information bar, the header and the navigation render their modules without a container, so a class suffix would never reach the HTML. Corpus therefore carries
desktop-onlyandmobile-onlyover to the slot's own box. The other suffixes, a background, a frame, have no effect there, and that is deliberate: carried over to the box, they would paint the whole area instead of the module.
A whole band, Theme Customizer, Layout tab, the band in question, Classes list: Hidden on phones. The opposite, Phones only, is there too, for a call to action that only makes sense on the move, a number to dial for instance.
A piece of an article, in the source code, Bootstrap's own classes: d-none d-md-block hides below the threshold and shows above it, d-md-none does the reverse.
Read this before using it. Hiding here means
display: none: the content disappears for everyone, screen readers included. A visitor using a keyboard or listening loses the information, not just the visual clutter.Keep it for what is decorative or redundant: an illustration, a column repeating what is already said above. Information the mobile visitor will not find anywhere else must not be hidden: on a public site, that visitor is often the majority.
Before hiding, ask whether you could shorten, reorder or fold into an accordion instead. All three keep the information; hiding removes it.
Building the footer
The footer is built from modules, not from Joomla's Footer module: that one only outputs a copyright line and a link to joomla.org.
Position footer, the upper row. Publish as many blocks as you want columns; they spread out on their own. A Custom module for the introduction, Menu modules for the link lists. Modules come out unframed there: in a footer a frame separates nothing and weighs everything down. Column widths are set in the Theme Customizer, Layout tab, group Footer, auto spreads evenly, 4-4-4 forces three equal columns.
Position footer-bottom: the lower row. Publish a Menu module there with your obligation links: accessibility, legal notice, personal data. Those links differ from one site to the next and one of them is mandatory in France: they are yours, the template does not invent them.
Two things are placed by the template itself: the Display settings button, and the © year + site name line, aligned right. Both can be hidden and rewritten in the Footer group of the Layout tab: see The Layout, § The bottom of the footer.
The site name comes from Joomla's global configuration, not from the logo text: see Appearance, § The logo, for the distinction between the two.
Coming from Cassiopeia
Every Cassiopeia position name is declared in Corpus. Your modules stay published, at the same position, and reappear in the right place as soon as the Layout points at them. main-top and main-bottom behave exactly as they do in Cassiopeia: inside the content column.
One thing to redo: topbar. In Cassiopeia it is the top band; in Corpus that band has two sides, topbar-left and topbar-right. Repoint your modules to one of them, or point the bar at topbar in the Position field of whichever side suits you.
How to see what is published where
Content → Site Modules, Position column, or the Select Position filter. Joomla only lists positions already in use: to see everything Corpus offers, open a module and unfold the Position field, they are grouped there under the template's name.
A module published on a position that no row displays appears nowhere, and nothing warns you. If a module stays invisible, first check that its position is chosen somewhere in the Layout tab of the active style.
Up to date for Corpus 2.1.43.