# The module is active but nothing shows on the site

> The module is installed, it appears in the list, it is enabled and its settings page responds. Yet the store shows no trace of it. Almost always this isn’t a bug in the module: it is hooked nowhere, or the theme never calls the place where it hooked in.

- Source canonique : [https://allaux.fr/en/modules/module-actif-mais-rien-ne-s-affiche](https://allaux.fr/en/modules/module-actif-mais-rien-ne-s-affiche)
- Langue : EN
- Dernière mise à jour : 2026-09-30

## Direct answer

> Open Modules > Positions and look for the module in the hook list: if it appears nowhere, it is active but attached to nothing, and the Transplant a module button fixes that. If it is attached, check that your theme actually calls that hook: 1.7, 8 and 9 themes dropped several positions that existed in 1.6.

## What you observe

- The module is listed, enabled, and its settings save normally
- Nothing appears on the page where it should, in any browser
- The block shows on one page but not on another of the same type
- It displayed before a theme change, and not after
- It shows for you when logged in as admin, but not for a visitor

## On PrestaShop: the module isn’t hooked, or not in the right place

A PrestaShop module only appears if it is attached to a hook point, and that attachment is recorded in the database at install time. If installation partly failed, or the module was dropped in manually, it can be active while hooked nowhere. The admin’s «Positions» page lists these attachments and lets you hook a module onto a specific point.

A second cause, even more common since the PrestaShop 1.7 themes: the module is hooked onto a point your theme never calls. Side columns have disappeared from many modern themes; a module designed to render in a left column then stays invisible without raising any error. The module works and produces its content, but no template asks for it.

Third cause: exceptions. The Positions page lets you exclude a module from certain controllers. An exception set long ago, or inherited from a configuration taken over, explains a block present everywhere except on one page.

## On WooCommerce: the theme template swallowed the hook

WooCommerce lets a theme replace its templates by copying them into a woocommerce folder inside the theme. That is intended and documented, and it is the most common cause of invisibility: the theme copied the template two years ago, and the copy doesn’t contain the action call your extension hooks onto. The extension runs, finds no anchor, and displays nothing.

Another cause that has become frequent: the cart and checkout blocks. A store using blocks rather than the older shortcodes doesn’t fire the same hook points, and an extension written for the legacy flow doesn’t appear in the new one. The behaviour is normal, but nothing signals it.

Finally, a page cache serves static pages: if the module was enabled after caching, the page served to visitors predates it. That also explains a block visible to you, logged in and therefore not cached, and invisible to everyone else.

## The order I check in

1. **Clear every cache, then look again** — Platform cache, page cache, browser cache, server cache. A fair share of these cases end there, and there is no point digging further before doing it.
2. **Check the hook attachment** — On PrestaShop, the Positions page; on WordPress, reading the extension’s code to find which action it actually hooks onto.
3. **Check that the theme calls that point** — I look for the call in the theme templates. If it isn’t there, the problem is in the theme, not in the module.
4. **Test with the default theme** — Temporarily switching to the theme shipped with the platform settles it in minutes: if the module appears, the cause is in the theme.

## An invisible module is almost never a broken module

> The distinction matters for what comes next: if the module works but isn’t called, the job is to hook it correctly or add the missing call in the theme, which is short. If it is genuinely broken, the server error log will hold a trace. Reading that log before concluding avoids paying for troubleshooting on a positioning problem.

## Related pages

- **Understanding PrestaShop hooks** — How hook points work, essential for placing this kind of problem. ([/guides/comprendre-hooks-prestashop](/guides/comprendre-hooks-prestashop))
- **A module refuses to install** — When the problem is upstream: the module isn’t properly installed at all. ([/prestashop/problemes/module-refuse-installation](/prestashop/problemes/module-refuse-installation))
- **Clearing the PrestaShop cache** — The full procedure, including when the back office no longer responds. ([/guides/vider-cache-prestashop](/guides/vider-cache-prestashop))
- **Creating a WordPress child theme** — To edit a template without the change vanishing at the next theme update. ([/guides/creer-theme-enfant-wordpress](/guides/creer-theme-enfant-wordpress))

## FAQ

### The module shows on the home page but not on product pages, why?

Either it is hooked onto a point that exists only on the home page, or an exception excludes it from the product controller. Both are fixed from admin, without touching code.

### I changed theme and the module vanished, is that normal?

It is common and consistent: each theme decides which hook points it calls and where. A module hooked onto an area the new theme doesn’t have becomes invisible with no error.

### I can see the block while logged into admin, but not in private browsing

That is the signature of a page cache: what visitors receive is a version saved before the module was enabled. Clearing that cache usually fixes it.

### Does the theme have to be modified to display a module?

Not always: hooking the module onto a point the theme already calls is preferable. If the desired location doesn’t exist in the theme, then yes, the call must be added, and that change must be made so it survives theme updates.

### How do I find which hook a module attaches to?

On PrestaShop the Positions page tells you. On WordPress it is read from the extension’s code, in its action and filter registration calls: there is no equivalent screen.
