⚙️ ConfigurationIntermédiaire PS 1.6 PS 1.7 PS 8.x

Navigation à facettes absente de la recherche PrestaShop : solutions

La navigation à facettes ne s'affiche pas sur la page de recherche PrestaShop ? Découvrez les causes et solutions pour activer les filtres sur vos résultats.

En bref : La navigation à facettes est absente de la page de recherche PrestaShop car le module natif ne supporte que les pages catégories. La solution passe par la vérification du layout du thème (colonne gauche + hook displayLeftColumn), puis éventuellement un override du module ou un développement spécifique pour étendre le filtrage au contrôleur de recherche.

Publié le 21 mars 2026 5 min de lecture Alexandre Carette

Pourquoi la navigation à facettes n'apparaît pas sur la page de recherche

La navigation à facettes (filtres par prix, marque, attributs…) est l'un des éléments les plus importants pour l'expérience utilisateur d'une boutique e-commerce. Pourtant, un problème récurrent sur PrestaShop est son absence totale sur la page des résultats de recherche, alors qu'elle fonctionne parfaitement sur les pages catégories.

Ce comportement n'est pas un bug : c'est une limitation architecturale volontaire. Le module de navigation à facettes (anciennement blocklayered, puis ps_facetedsearch) a été conçu pour fonctionner exclusivement sur les pages de listing catégorie. La page de recherche utilise un contrôleur différent (SearchController) qui n'est pas pris en charge nativement par le module.

Diagnostic : vérifier les prérequis

Avant de chercher des solutions avancées, trois vérifications simples s'imposent.

1. La colonne gauche est-elle affichée par le thème ?

Certains thèmes masquent la colonne latérale sur la page de recherche, soit par CSS, soit en ne déclarant pas la zone de hook dans le template. Vérifiez dans votre thème le fichier correspondant à la page de recherche :

  • **PrestaShop 1.6 :** `themes/votre-theme/search.tpl`
  • **PrestaShop 1.7+ / 8.x :** `themes/votre-theme/templates/catalog/listing/search.tpl`

Recherchez la présence du hook de colonne gauche :


{hook h="displayLeftColumn"}

Si cette ligne est absente, le thème ne rend tout simplement pas la colonne latérale sur cette page. Ajoutez-la dans la structure de votre template, à l'intérieur d'un conteneur approprié :


<div id="left-column" class="col-xs-12 col-sm-4 col-md-3">
  {hook h="displayLeftColumn"}
</div>

2. Le module est-il greffé sur le bon hook ?

Dans le back-office, rendez-vous dans Design > Positions (ou Modules > Positions selon votre version) et vérifiez que le module ps_facetedsearch (ou blocklayered sur les anciennes versions) est bien greffé sur le hook displayLeftColumn.

3. Le layout de la page de recherche inclut-il les colonnes ?

Sur PrestaShop 1.7+ et 8.x, le système de layout détermine quelles colonnes sont actives par page. Allez dans Design > Thème et logo > Pages de configuration et vérifiez que la page "Recherche" utilise un layout incluant la colonne gauche (par exemple layout-left-column).

Solution 1 : forcer l'affichage du hook dans le template de recherche

La solution la plus directe consiste à s'assurer que le template de recherche appelle bien le hook displayLeftColumn. Si votre thème utilise un layout sans colonne pour la recherche, vous pouvez soit changer le layout dans le back-office, soit modifier le template.

Pour PrestaShop 8.x, créez un override de template dans votre thème enfant :


{* themes/votre-theme/templates/catalog/listing/search.tpl *}
{extends file='catalog/listing/product-list.tpl'}

Assurez-vous que product-list.tpl hérite d'un layout avec colonne gauche, ou forcez-le :


{assign var='layout' value='layouts/layout-left-column.tpl'}

Solution 2 : développer un module complémentaire

Le module natif de navigation à facettes n'a pas été conçu pour la page de recherche. Pour une intégration propre et maintenable, la meilleure approche est de développer un module spécifique qui étend les capacités de filtrage au contrôleur de recherche.

Ce module doit :

  1. Se greffer sur le hook `displayLeftColumn` avec une condition sur le contrôleur actif
  2. Récupérer les résultats de recherche et en extraire les attributs filtrables
  3. Générer une interface de filtres compatible avec la liste de produits
  4. 
    <?php
    // Exemple de hook dans un module PrestaShop 8.x
    public function hookDisplayLeftColumn($params)
    {
        // Ne s'exécuter que sur la page de recherche
        if ($this->context->controller instanceof SearchController) {
            $searchQuery = Tools::getValue('s');
            // Logique de construction des filtres
            // basée sur les résultats de recherche
            $this->context->smarty->assign([
                'filters' => $this->buildSearchFilters($searchQuery),
            ]);
            return $this->display(__FILE__, 'views/templates/hook/search-filters.tpl');
        }
        return '';
    }
    

    Solution 3 : utiliser le module ps_facetedsearch avec un override

    Sur PrestaShop 8.x, le module ps_facetedsearch est nettement plus flexible que son ancêtre. Il est possible de créer un override pour étendre son comportement à la page de recherche.

    Créez le fichier override/modules/ps_facetedsearch/ps_facetedsearch.php :

    
    <?php
    class Ps_FacetedsearchOverride extends Ps_Facetedsearch
    {
        public function hookDisplayLeftColumn($params)
        {
            // Permettre l'affichage sur la page de recherche
            $controller = $this->context->controller;
            if ($controller instanceof SearchController) {
                // Adapter le contexte pour simuler une catégorie
                // afin que le module puisse générer ses filtres
                $this->context->controller->php_self = 'category';
            }
            return parent::hookDisplayLeftColumn($params);
        }
    }
    

    Attention : Cette approche est un contournement. Elle peut nécessiter des ajustements selon votre version exacte et votre configuration de filtres. Testez systématiquement en environnement de développement.

    Bonnes pratiques pour la recherche à facettes

    Performances

    La navigation à facettes sur la recherche peut être coûteuse en ressources car elle doit analyser un ensemble de produits non borné par une catégorie. Pensez à :

    • **Limiter le nombre de filtres** affichés sur la page de recherche
    • **Mettre en cache** les résultats de filtrage
    • **Indexer correctement** vos attributs et caractéristiques dans la base de données

    UX et SEO

    • Utilisez des URLs canoniques pour éviter le contenu dupliqué généré par les combinaisons de filtres
    • Ajoutez `rel="nofollow"` sur les liens de filtre pour éviter le crawl budget inutile
    • Sur PrestaShop 8.x, configurez les filtres via le back-office dans **Modules > Navigation à facettes > Configuration** pour définir précisément quels attributs sont filtrables

    Alternative moderne : recherche AJAX

    Sur PrestaShop 8.x, une approche plus moderne consiste à implémenter une recherche entièrement en AJAX avec filtres dynamiques. Le module ps_facetedsearch utilise déjà ce mécanisme sur les pages catégories. En adaptant les appels AJAX pour qu'ils fonctionnent également depuis le contexte de recherche, vous obtenez une expérience fluide et performante.

#navigation à facettes #recherche PrestaShop #filtres produits #hook displayLeftColumn #module faceted search

Questions fréquentes

Tout ce que vous devez savoir sur ce sujet.

Un projet PrestaShop ?

Discutons-en directement.

★★★★★

193 projets livrés

Gratuit & sans engagement — réponse sous 24h

Alexandre Carette

Alexandre Carette

Expert PrestaShop & Architecture E-commerce

Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.