THE GRUE Get professional WordPress themes

Find Template Module Positions Joomla

Every Joomla layout question eventually reduces to the same puzzle: which module position puts my content where I want it? You publish a module to something called right and it appears on the left. You publish to banner and it appears nowhere at all. The position names in the dropdown are just labels, and until you know where each label actually renders, assigning modules is a guessing game.

The good news is that Joomla ships with a built-in position preview that answers most of this in thirty seconds, and the template itself contains two files that answer the rest. Between the preview, templateDetails.xml, and your browser's developer tools, you can map every position a template offers — including the ghost positions that exist in name but never render.

This tutorial walks through all of it, in the order we actually use on real projects: turn on the preview, read the XML, inspect the markup, then write the map down so you never have to do this again for the same template.

Method 1: the built-in position preview

Joomla can outline every module position directly on your live pages. The feature is disabled by default for good reason — you do not want visitors seeing it — so it takes two steps.

Step 1: enable Preview Module Positions

In the administrator area, go to System, then Templates (under the Site heading), and open the Options button in the toolbar. On earlier Joomla versions the same screen lives under Extensions, then Templates, then Options. Set Preview Module Positions to Enabled and save. Nothing changes on the site yet; you have only unlocked the feature.

Step 2: append ?tp=1 to the site URL

Now load any front-end page with ?tp=1 added to the address. For the homepage that is simply:

https://www.example.com/?tp=1

For an inner page that already has a query string, use an ampersand instead:

https://www.example.com/blog?view=archive&tp=1

Joomla redraws the page with every rendered position outlined and labeled with its name. You can immediately see that position-7 is the right column, banner sits above the content, and the footer is actually three positions side by side.

Step 3: check more than one page type

This is the step most tutorials skip. Positions render depending on what is published in them and around them, and templates often use different structures for the homepage, article views, and blog layouts. Run ?tp=1 on at least the homepage, one article, and one category blog page. A position that looks like a full-width row on the homepage may be a narrow sidebar slot everywhere else.

When you are done, disable the preview again. Leaving it on lets anyone with a browser inspect your layout skeleton, and while that is not a security hole in itself, there is no reason to advertise your structure.

Method 2: read templateDetails.xml

The preview shows positions that render on the pages you tested. The template's manifest shows every position it registers, including ones no demo page ever used. Open the file at:

templates/your_template/templateDetails.xml

Inside it you will find a positions block listing each name the template declares:

<positions>
  <position>header</position>
  <position>banner</position>
  <position>position-7</position>
  <position>footer-a</position>
</positions>

These names are exactly what populates the Position dropdown when you edit a module. If a position appears here but never showed up in your ?tp=1 tour, it is either conditional (it only renders on certain layouts) or dead (declared but never output). Which one it is, only the template's index.php can tell you — search that file for the position name and see whether a jdoc:include references it. This is the same reading exercise we recommend in our guide to Joomla template documentation, and it takes minutes once you know what to look for.

Method 3: browser developer tools

Sometimes you want the reverse question answered: I can see a block on the page — which position is it? Right-click the element and choose Inspect. Most templates wrap module output in a container whose class or id hints at the position, something like sidebar-right or a module chrome wrapper near a region container. Walk up the HTML tree until you find the wrapper that groups the modules, then match its place in the layout against your ?tp=1 screenshot.

Dev tools are also the fastest way to diagnose width questions. Select the position's wrapper and the browser shows its computed width, so you know whether a position gives you 300 pixels or the full content width before you design a module for it.

Positions that exist but render nowhere

Every experienced Joomla builder has lost time to this: you assign a module, it never appears, the module is published, the assignment is correct, and still nothing. The usual suspects, roughly in order of frequency:

  • Collapsible regions. Most templates wrap positions in a conditional that checks whether any module is published there — the whole row is skipped when empty. That part works in your favor. The trap is combination logic: some rows only render when a specific sibling position is also occupied, or divide their width by how many of their positions are active.
  • Declared but never output. The name sits in templateDetails.xml, but no jdoc:include in index.php ever prints it. Leftovers from an older version of the template, usually.
  • Component-specific layouts. Some positions only exist inside a particular view — a position rendered by a component override will never appear on other pages.
  • Menu assignment mismatch. Not a template issue at all: the module is limited to menu items that do not include the page you are staring at.
  • The wrong template style. Sites can assign different template styles to different menu items. Your module is fine; that page is simply using another template.

The debugging order that wastes the least time: confirm the module is published and assigned to All pages, load the page with ?tp=1 to see whether the position outline appears at all, and if it does not, search index.php for the position name.

Common position names and what they usually mean

Position names are conventions, not standards, but templates descended from Joomla's default templates share a recognizable vocabulary. Treat this table as a starting hypothesis to verify with ?tp=1, not as gospel.

Position name Typical location Notes
position-7 Right sidebar Protostar-era convention, still widespread
position-8 Left sidebar Often collapses when empty, widening the content
banner Full width above or below the header Common home for slideshows
breadcrumbs Above the component area Usually holds only the breadcrumbs module
footer / footer-a, footer-b Bottom of the page Lettered variants are side-by-side columns
debug Very bottom For the debug console; ignore for layout work

Mapping positions to real page regions

Raw position names only become useful when you translate them into the language everyone else on the project speaks: header, hero, sidebar, pre-footer. Take a full-page screenshot of the ?tp=1 view for each major page type and annotate it, or keep a simple two-column list — position name on the left, plain-English region on the right, with a note about width and any collapse behavior.

This map immediately pays for itself. Placing a call-to-action module stops being trial and error, and choosing a slot for a responsive menu module becomes a lookup instead of an experiment. If the template genuinely lacks a slot where you need one, that is solvable too — see our tutorial on adding a new module position to a Joomla template.

Document it once, benefit forever

The whole discovery process — preview, XML, dev tools, map — takes under an hour for a typical template. Do it once, write it down, and store the map with the project. We keep ours in the same short internal document that records template versions and customizations. Six months later, when a client asks for a promo banner "under the menu but above the slideshow," the answer is a thirty-second lookup rather than a fresh investigation. On multi-site setups using the same template, one map serves every site.

FAQ

The ?tp=1 trick does nothing on my site. Why?

Almost always because Preview Module Positions is still disabled in the Templates options — the URL parameter is ignored until that setting is on. If you have enabled it and still see a normal page, check that you are appending the parameter correctly (use &tp=1 when the URL already contains a question mark), clear any page cache, and confirm you are testing the site front end rather than the administrator side. Aggressive caching plugins and CDNs can also serve a cached copy without the outlines; bypass the cache or test logged in.

Is it safe to leave the position preview enabled permanently?

It will not break anything, but we recommend switching it off outside active development. Anyone can append the parameter and view your layout structure, and cached copies of preview pages can leak into search results in sloppy caching setups. It takes ten seconds to toggle, so treat it like scaffolding: put it up when working, take it down when done.

Can two templates on the same site use different position names?

Yes, and this is a frequent source of vanished modules after a template switch. Position names belong to the template, not to Joomla core. When you change templates, modules stay assigned to the old names, and any name the new template does not declare simply never renders. After a switch, go through Site Modules, filter by position, and reassign anything pointing at positions the new template lacks.

Why does my module show on some pages but not others in the same position?

Check three things in order: the module's Menu Assignment tab (it may be limited to specific menu items), whether different pages use different template styles with different layouts, and whether the position on that page type is conditional in the template — some templates only output certain rows on the front page. The ?tp=1 preview on the specific problem page tells you instantly whether the position renders there at all.

The bottom line

Finding module positions in Joomla is a solved problem with three tools: the ?tp=1 preview shows what renders, templateDetails.xml shows what is registered, and dev tools connect the markup to the layout. Spend the hour, build the map, save it with the project, and every future layout task on that template gets faster. For the rest of our template and module guides, start at the Joomla hub.