Étape 5 SEO : description auto (titre redondant, entités HTML) + URL d'aperçu incorrecte #91
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
L'étape 5 du wizard (
/edit/<uuid>/5) présente trois problèmes dans la description SEO auto-générée et dans l'aperçu moteur de recherche.Problème 1 — Le titre de l'article est repris dans la description
Les moteurs de recherche affichent le
<title>et la<meta name="description">séparément. Si la description commence par le titre, les ~155 caractères disponibles sont gaspillés et Google tronque souvent ce doublon.Cela survient quand le contenu Markdown débute par une phrase identique ou proche du titre (cas fréquent).
Correction
Après génération du texte brut, supprimer le titre en tête de description (insensible à la casse) :
Problème 2 — Entités HTML dans la description (
&, …)La génération actuelle (
public/index.php, lignes ~658, ~1026, ~1051) :Parsedown::text()produit du HTML.strip_tags()retire les balises mais laisse les entités HTML brutes :&, ,<,'… Ces entités apparaissent telles quelles dans la balise<meta name="description">et sont affichées crûment dans les résultats Google.Exemple :
AT&Tdans le contenu →AT&Tdans la description SEO.Correction
Ajouter
html_entity_decode()aprèsstrip_tags()(inclus dans la correction du problème 1 ci-dessus).Problème 3 — URL d'aperçu affiche un mauvais slug
Dans
templates/wizard/step5.php, l'URL d'aperçu est initialisée côté serveur :Puis
post_confirm.jstente de la mettre à jour dynamiquement en écoutant#confirm-slug:Mais
#confirm-slugest défini danspost_confirm.php(step 6), pas dans step5. En mode édition, l'élément est absent →getElementByIdretournenull→ l'URL d'aperçu reste figée sur$postSlug(slug du brouillon), qui peut différer du slug publié.Correction
Dans
step5.php, rendre l'URL d'aperçu non-interactive (elle est en lecture seule à cette étape) : supprimer la dépendance JS sur#confirm-slugen n'incluant paspost_confirm.jsà l'étape 5, ou en affichant simplement le slug actuel de l'article (pas du brouillon) :Et dans le
#pc-data, ne pas passerdata-base-urlsi#confirm-slugest absent, pour éviter queupdatePreview()écrase l'URL avec une chaîne vide.Fichiers concernés
public/index.php$autoSeoDesc)templates/wizard/step5.phppost_confirm.js)public/assets/js/post_confirm.jsupdatePreview()(guard si#confirm-slugabsent)Critères d'acceptation
&, …) dans la description générée$autoSeoDescdansindex.phpsont corrigées#confirm-slugest absent