Maillage interne SEO automatique : installation et aide
Démarrage rapide
- Installez le ZIP dans Modules > "Module Manager" et ouvrez "Improve" > Outil de maillage interne SEO.
- Vérifiez Liens maximum par page et Liens maximum par groupe dans Paramètres > Paramètres.
- Ajoutez un Groupe de liens avec Nom, Entité cible ou URL cible, et Mots-clés.
- Choisissez des Zones de contenu et Types de pages restreints, définissez Liens max. de ce groupe et laissez Actif sur Oui.
- Enregistrez et ouvrez une page contenant une expression correspondante dans la zone de contenu sélectionnée.
- Inspectez l'ancre générée et vérifiez sa destination, sa langue, ses attributs et le nombre de liens.
Nécessite PrestaShop 1.6.1 ou ultérieur et PHP 7.1 ou ultérieur.
Manuel de configuration
Installer et ouvrir la configuration
Téléversez le ZIP dans Modules > "Module Manager" > "Upload a module". Installez-le et cliquez sur "Configure". Ouvrez "Improve" > Outil de maillage interne SEO pour accéder à Tableau de bord, Groupes de liens et Paramètres > Paramètres. "Configure" ouvre l'écran de configuration.
Le traitement de la page finale utilise actionOutputHTMLBefore à partir de PrestaShop 1.7.1, et displayHeader avec un filtre de sortie Smarty sur les versions antérieures prises en charge. Il ignore les réponses AJAX et non HTML. Le moteur de page finale nécessite une section body. Vérifiez le résultat avec votre cœur PrestaShop et votre thème.
Configurer Paramètres généraux
| Paramètre | Valeur par défaut | Configuration |
|---|---|---|
| Liens maximum par page | 5 | Limitez les liens générés sur une page. Les liens existants ne consomment pas ce quota de liens générés. |
| Liens maximum par groupe | 3 | Valeur de repli lorsqu'un groupe n'a pas sa propre limite positive. |
| Cible de lien par défaut | _self |
Choisissez la cible par défaut. Utilisez _blank si les liens doivent ouvrir une autre fenêtre ou un autre onglet. |
| Attribut rel de lien par défaut | Vide | Valeurs facultatives telles que nofollow ou noopener. |
| Classe CSS de lien par défaut | mpr-autolink |
Classe utilisée sauf si un groupe fournit la sienne. |
| Activer le profilage de débogage | Non | Ajoutez des diagnostics dans les commentaires HTML pour le dépannage. |
| Adresses IP de débogage | Vide | IP des visiteurs autorisés à voir les diagnostics, séparées par des virgules. Un champ vide ne restreint pas le débogage par IP. |
Utilisez de petites limites positives pour votre première règle. Enregistrez et inspectez la sortie avant de les augmenter.
Configurer Règles
| Paramètre | Valeur par défaut | Comportement actuel |
|---|---|---|
| Empêcher les href en double | Oui | Modifier ce réglage n’a aucun effet. Les liens existants vers une destination comptent toujours dans la limite positive du groupe. |
| Empêcher le lien dans un parent déjà lié | Non | Modifier ce réglage n’a aucun effet. Le texte déjà dans un lien est ignoré, mais le reste du texte dans le même élément englobant peut recevoir des liens. |
| Empêcher plusieurs liens automatiques dans le même élément | Oui | Limite les liens dans chaque segment de texte continu. Les éléments imbriqués et les groupes suivants peuvent ajouter d’autres liens dans le même élément englobant. |
| Distribution proportionnelle de la limite globale | Oui | Répartissez les limites effectives des groupes lorsque leur total dépasse la limite positive de la page. |
| Distribution uniforme des liens dans le texte | Oui | Modifier ce réglage n’a aucun effet. Les liens suivent l’ordre des zones de contenu, groupes, mots-clés et correspondances dans le texte. |
Configurer Affichage et Exclusions
Dans Affichage, définissez ces valeurs de repli. Les zones de contenu sélectionnées d'un groupe sont prioritaires sur ses sélecteurs avancés, eux-mêmes prioritaires sur les sélecteurs globaux.
| Paramètre | Valeur par défaut | Utilisation |
|---|---|---|
| Sélecteurs CSS inclus | .product-description, #description, .page-content, .post-content |
Zones pouvant être traitées lorsqu'un groupe ne fournit pas de périmètre plus restreint. |
| Balises HTML incluses | p,div,span,blockquote,li,td |
Balises parentes immédiates du texte autorisant l'insertion. Un groupe peut remplacer cette liste. |
La correspondance avancée prend en charge les sélecteurs simples : .class, #id, tag, tag.class et tag#id. Ne supposez pas que toute la syntaxe des sélecteurs CSS d'un navigateur est disponible. Les zones intégrées peuvent inclure des motifs de thème prédéfinis supplémentaires.
Dans Exclusions, vérifiez :
| Paramètre | Valeur par défaut | Utilisation |
|---|---|---|
| Ignorer l'URL de la page actuelle | Oui | Ignorez un groupe dont le chemin cible correspond à la page actuelle. |
| Exclure les titres | Oui | Ignorez le texte dont le parent immédiat est un titre. Vérifiez séparément le balisage personnalisé des titres imbriqués. |
| Exclure le texte en gras | Non | Ignorez le texte dont le parent immédiat est strong ou b. |
| "Excluded pages" | Vide | Sélectionnez les pages CMS qui ne doivent pas être traitées. |
Les sélections de pages CMS exclues sont stockées sous une forme telle que {"cms":[3,4,6]}. Utilisez le formulaire plutôt que de modifier directement le stockage.
Créer un groupe de liens
Ouvrez Groupes de liens et ajoutez un groupe au périmètre restreint.
| Champ | Valeur par défaut d'un nouveau groupe | Saisie attendue |
|---|---|---|
| Nom | Vide | Libellé interne obligatoire. |
| Entité cible | Vide | Destination facultative unique : produit, catégorie, page CMS, fabricant ou fournisseur. |
| URL cible | Vide | URL de destination obligatoire ; la sélection d'une entité peut la remplir. Utilisez une URL relative ou absolue pour une cible manuelle. |
| URL cible (remplacement par langue) | Vide | URL de repli manuelle par langue. Incluez le chemin de langue correct. |
| Mots-clés | Vide | Termes obligatoires séparés par des virgules. |
| Mots-clés (remplacement par langue) | Vide | Termes traduits facultatifs ; un champ vide utilise les mots-clés de base. |
| Zones de contenu | Vide | Choisissez "Product description (long)", "Product short description", "Category description", "CMS page content", "Blog post content", "Manufacturer description" ou "Supplier description". Un champ vide utilise les sélecteurs de repli. |
| Types de pages | Vide | Limitez le traitement aux pages produit, catégorie, CMS, blog, fabricant, fournisseur ou accueil. Un champ vide n'impose aucun filtre de type de page au groupe. |
| Position du lien | "First occurrence" | Propose les choix première, milieu, dernière et répartition. Changer de choix ne modifie pas la position des liens. |
| Liens max. de ce groupe | 0 | Utilisez la valeur globale par défaut des groupes. Saisissez une valeur positive pour la remplacer. |
| Ignorer la casse | Oui | Recherchez les correspondances sans tenir compte de la casse. |
| Ajouter la balise | Non | Encadrez le texte d'ancre correspondant avec un balisage strong. |
| Activer la limite globale de liens | Non | Les liens existants vers la destination comptent dans la limite du groupe, que ce champ soit activé ou non. |
| Cible du lien | Vide | Utilisez la valeur globale par défaut ou remplacez-la par _self ou _blank. |
| Attribut rel du lien | Vide | Utilisez la valeur globale par défaut ou fournissez une valeur propre au groupe. |
| Classe CSS du lien | Vide | Utilisez la valeur globale par défaut ou fournissez une valeur propre au groupe. |
| Sélecteurs CSS (avancé) | Vide | Remplacez les sélecteurs globaux lorsqu'aucune zone de contenu n'est sélectionnée. |
| Balises HTML (avancé) | Vide | Remplacez les balises globales, par exemple p,li. |
| Priorité | 0 | Les valeurs les plus basses sont traitées en premier. |
| Actif | Oui | Désactivez un groupe sans le supprimer. |
Lorsqu'une destination d'entité est résolue avec succès, son URL dans la langue actuelle est prioritaire sur le remplacement manuel de l'URL par langue. Pour contrôler entièrement une destination avec des URL manuelles par langue, laissez Entité cible vide.
Par exemple :
Name: Shower trays
Target URL: /12-shower-trays
Keywords: shower tray, shower trays, walk-in shower tray
Content Zones: Product description (long), Product short description
Page Types: product
Max links from this group: 1
Ignore case: Yes
Active: Yes
La syntaxe des mots-clés prend en charge * dans un terme et les alternatives avec | :
shower tray, walk-in shower tray, shower*, seo|search engine|SEO tool
Le caractère générique correspond aux caractères non blancs dans le terme. Il ne correspond pas à un texte arbitraire couvrant plusieurs mots.
Vérifier les liens et le style du thème
Enregistrez le groupe, puis ouvrez une page contenant une expression correspondante dans la zone sélectionnée. Inspectez la destination, le texte, target, rel et la classe du lien. Vérifiez une page exclue et une page sans l'expression.
Les ancres existantes sont ignorées. Les liens existants vers la même cible réduisent la limite positive de ce groupe. Les descriptions enregistrées des produits, catégories, CMS et blogs restent inchangées, car l'insertion se fait au rendu.
Un lien généré peut ressembler à ceci :
<p>Choose a <a href="/12-shower-trays" class="mpr-autolink">shower tray</a> for your bathroom.</p>
Avec les attributs du groupe activés :
<a href="/12-shower-trays" target="_blank" rel="noopener" class="internal-seo-link"><strong>shower tray</strong></a>
Vous pouvez styliser les liens automatiques dans votre thème :
.mpr-autolink {
text-decoration: underline;
text-underline-offset: 2px;
}
Le tableau de bord présente les groupes, mots-clés, l'utilisation des zones et entités, les groupes récents et la couverture du catalogue. Il ne vérifie pas toutes les pages sources possibles.
Importer et exporter en CSV
Utilisez "Import CSV" ou Exporter CSV dans Groupes de liens. L'import crée de nouveaux enregistrements. Il ne met pas à jour les groupes existants par nom ; réimporter un export peut donc créer des doublons. Choisissez le contexte boutique souhaité avant l'import.
Colonnes obligatoires :
name,target_url,keywords
Colonnes complètes de l'export :
name,target_url,keywords,link_position,max_links,ignore_case,add_strong,link_target,link_rel,link_class,content_zones,page_types,entity_type,entity_id,position,active
Exemple :
Shower trays,/12-shower-trays,"shower tray, shower trays, shower*",first,1,1,0,_self,,mpr-autolink,"[""product_description""]","[""product""]",category,12,10,1
Utilisez l'extension .csv en minuscules et des virgules comme séparateurs. Vérifiez le nombre d'éléments importés et ignorés. Ce format d'export n'inclut pas les remplacements traduits des mots-clés/URL ni tous les champs avancés ; conservez donc une sauvegarde de la base de données si vous avez besoin d'une restauration complète.
Dépanner et désinstaller
Si des liens manquent, vérifiez Actif, la langue actuelle, la résolution de la cible, le type de page, les sélecteurs de zone, les balises parentes autorisées et les deux limites. Vérifiez si la cible est l'URL actuelle ou si elle est déjà liée suffisamment de fois. Un mot-clé réparti sur plusieurs éléments HTML peut ne correspondre à aucun segment de texte.
Activez Activer le profilage de débogage et saisissez votre IP dans Adresses IP de débogage. Inspectez le code source de la page près de la balise body fermante pour trouver "MPR Internal Linking Debug v2.0", le type de page, le nombre de liens existants, le nombre de liens générés et les correspondances des groupes. Les réponses de débogage sont marquées private et no-store. Désactivez le débogage une fois terminé.
Utilisez Paramètres > Intégrité pour les contrôles d'infrastructure. Actualisez les caches de page concernés après les modifications.
Désactivez les groupes ou le module pour arrêter temporairement l'insertion. La désinstallation supprime son menu d'administration, ses paramètres, préférences et le stockage des groupes de liens. Exportez ou sauvegardez les groupes au préalable. Vos textes enregistrés du catalogue et du CMS restent inchangés.
Questions
2
Les liens automatiques vont-ils toucher ma navigation, mon fil d'Ariane ou mes données structurées JSON-LD ?
Le traitement de la page complète par Automatic Internal SEO Linker agit dans les zones de contenu configurées du <body>. Le <head> est exclu. Les balises parentes de texte autorisées par défaut sont p,div,span,blockquote,li,td ; <script> n’en fait pas partie.
La navigation et le fil d’Ariane restent hors traitement si vos zones ou sélecteurs les excluent. Choisissez des zones restreintes et inspectez le résultat final, y compris les données JSON-LD qui y sont intégrées. Le balisage personnalisé ne bénéficie pas d’une protection générale.
L’insertion automatique de liens nécessite-t-elle un outil de suivi des visiteurs ?
La correspondance des mots-clés de Automatic Internal SEO Linker ne nécessite ni script de suivi des visiteurs ni cookie de consentement.
Le module lit vos groupes de liens configurés et traite le HTML de la boutique sur le serveur avant de renvoyer la réponse.
Problèmes connus
12
Les pages de listes exclues recevaient toujours des liens
Les exclusions CMS n'étaient pas enregistrées de façon cohérente
Les imports CSV utilisaient le mauvais contexte de boutique
Liens internes absents sur les anciennes versions de PrestaShop
Libellés d’administration restés en anglais
Libellés traduits altérés
Un ciblage inchangé sélectionnait tout
Icônes manquantes avec les ressources regroupées
Les pages traduites pointaient vers des segments d'URL mal localisés
Des liens automatiques étaient insérés dans des liens existants
Les liens hors contenu consommaient la limite de la page
Liens incorrects autour des fragments HTML
Demandes de fonctionnalités
5
Implémenté
Exclusion de pages CMS du maillage automatique
Liens automatiques sur les mots-clés
Exclusion de pages
Vérification et réparation de l'installation
Mises à jour du module en un clic
Journal des modifications
v3.0.92026-08-30
- AddedAdmin UI for excluded pages — checkbox grid in Exclusions tab
- Addedcomplete FR/DE/ES/IT/PL translations
- ImprovedSync fragment-aware internal linking engine
- ImprovedV3.0.0 — 19x faster link injection engine + shared package + page exclusion
- ImprovedPre-scan CSS selectors to eliminate redundant regex scans
- FixedResolve localized internal link targets
- FixedSync entity selector package
- FixedVendor prestashop-admin as module files
- FixedExisting-link counting scoped to content regions (package update)
Versions précédentes
v2.1.02026-04-20
- Addedself-healing integrity checks for automatic diagnostics and repair
- Addedadmin menu management via MenuInstaller for streamlined module setup
- AddedLicense management tab with key management and renewal options
- Addedcomplete FR/DE/ES/IT/PL translations
- Improvedsettings form organization with tabbed layout
- FixedPrevent autolinking inside existing anchor tags
- Fixedadmin list filters — sorting, searching, and filtering now work correctly on all columns
v1.2.02025-09-10
- Addedlink group management: bundle related keyword-URL pairs and enable/disable as a set
- Improvedcase-insensitive matching with configurable per-rule override
- Fixedlinks being injected inside existing <a> tags causing nested anchor violations
- Addedmax-links-per-page limit with configurable threshold
v2.0.02025-08-01
- Addedfull compatibility with PrestaShop 9.x and Hummingbird theme
- Complete architecture rewrite: link rules now stored as a versioned JSON document for faster import/export
- AddedCSS selector targeting: apply linking rules only within specified content containers
- Improvedregex-based keyword matching with optional word boundary enforcement
- Addedper-link attribution — track click-throughs via a lightweight redirect proxy
- Fixedmemory exhaustion on pages with very long product descriptions containing repeated keywords
v1.1.02025-05-15
- Addedbulk import/export of keyword-URL rules via CSV
- Improvedexclusion list: skip linking on CMS pages, specific categories, or product IDs
- Fixedduplicate link injection when the same keyword appeared in page title and body
- Addednofollow/noopener attribute toggle per rule
v1.0.02025-01-17
- Initialrelease: automatic keyword-to-URL linking for product descriptions and CMS content
- InitialAdmin rule builder with keyword, target URL, and match-count-per-page settings
- InitialProcessed server-side using DOMDocument — no JavaScript dependency
- InitialMulti-language support for keyword sets and target URLs
Demo
Testez le module complet avant d'acheter
Achetez la licence plus tard et gardez vos réglages.
- Votre démo de 30 jours Testez-le sur votre propre boutique pendant 30 jours à partir de la première installation.
- Boutique de démo prête Découvrez une boutique de démo prête dans votre navigateur.
- Sans inscription Ni compte, ni e-mail, ni domaine de boutique requis.
En téléchargeant, vous acceptez les conditions de la démo et la politique de confidentialité.
En ouvrant cette démo, vous acceptez les conditions de la démo et la politique de confidentialité.