Projet

Général

Profil

Anomalie #2381

Corriger le niveau d'intertitre

Ajouté par tetue tetue il y a presque 7 ans. Mis à jour il y a environ un mois.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Catégorie:
b
Version cible:
Début:
26/10/2011
Echéance:
% réalisé:

0%

Resolution:
Navigateur:

Description

SPIP propose une hiérarchie des titres défectueuse pour les articles, qui passent directement du titre en h1 aux intertitres en h3, sans niveau intermédiaire, comme cela serait nécessaire pour structurer correctement (ie en HTML correct, sémantique, accessible, seo, toussa). Pour corriger cela, il suffit de déclarer ceci dans mes_fonctions.php :

$GLOBALS['debut_intertitre'] = "\n<h2 class=\"spip\">\n";
$GLOBALS['fin_intertitre'] = "</h2>\n";

Il serait temps de remettre en question ces intertitres, qui sont l'objet de correctifs systématiques de la part des personnes averties et de perpétuation d'une erreur involontaire pour les autres. Rendre le niveau d'intertitre optionnel, avec ce genre de configuration via espace privé, permettrait de changer en douceur, en ménageant la chèvre et la chou :

[x] utiliser des intertitres en h2 (correspondant à la réalité hiérarchie courante)
[ ] conserver les intertitres en h3 (rétrocompatibilité historique)

Étant davantage employé de part sa position dans la hiérarchie des titres, le h2 serait plus approprié par défaut.

En réalité, un champ de saisie, prérempli par défaut, serait plus indiqué :

Niveau d'intertitre : [ <h2 class="spip"> ]

Les thèmes CSS qui stylent les intertitres de SPIP déclareront h2.spip, h3.spip {...} comme cela se fait déjà pour s'assurer d'appliquer le style pareillement dans tous les sites, corrigés ou pas.

Historique

#1 Mis à jour par Joseph Larmarange il y a presque 7 ans

Ne serait-ce pas l'occasion d'introduire en natif la gestion des intertitres hiérarchisés ?

#2 Mis à jour par cedric - il y a presque 7 ans

  • Version cible mis à 3.0

#3 Mis à jour par marcimat 🌈 il y a plus de 6 ans

Je ne suis pas contre proposer un formulaire.
Il serait à mettre où ?
D'autres avis ?

#4 Mis à jour par b b il y a plus de 6 ans

J'ai retrouvé le fil de discussion qui a donné naissance à ce ticket :

http://thread.gmane.org/gmane.comp.web.spip.devel/61444/

Le problème était le suivant, la dist utilisait un fichier de fonctions qui demandait à SPIP de générer des intertitres en h2 par défaut :

http://zone.spip.org/trac/spip-zone/browser/_core_/plugins/dist/mes_fonctions.php?rev=51174

Et comme la dist est une extension (c'est peut être d'ailleurs ça le problème) on se retrouvait avec des intertitres en h2 tout le temps sans possibilité de désactiver ce comportement (alors qu'un squelette comme Zpip est prévu pour fonctionner avec des intertitres en h3).

Comme le soulignait Fil, Davux a proposé une solution :

basculer sur html5 et h2 (sans les rendre optionnels dans le core). ensuite ceux qui ont besoin de changer pour garantir leur site a l'ancienne pourront toujours utiliser des mes-options, des plugins
dedies etc.

On me signale dans l'oreillette que tetue faisait déjà cette proposition il y a quelques années...

#5 Mis à jour par da vux il y a plus de 6 ans

b b a écrit :

Comme le soulignait Fil, Davux a proposé une solution :

basculer sur html5 et h2 (sans les rendre optionnels dans le core). ensuite ceux qui ont besoin de changer pour garantir leur site a l'ancienne pourront toujours utiliser des mes-options, des plugins
dedies etc.

Y'a confusion, personnellement j'ai jamais proposé ça. Ma proposition: http://thread.gmane.org/gmane.comp.web.spip.devel/61480/
C'est-à-dire en résumé:

- Pour les sites en HTML5, h2, h3, h4 etc. on s'en fiche car ce qui importe est le niveau de titre relativement à la balise "article" ou "section" la plus proche dans la hiérarchie.

- Pour les sites en HTML4, on ne peut pas graver h2 ou h3 ou autre dans la roche car le contexte peut changer: parfois un article est présenté sur sa propre page, parfois comme sous-contenu, et du coup je propose d'ajouter un argument à |traiter_raccourcis ou #ENV ou je sais pas quoi, mais qu'en gros le niveau de titre soit choisi au moment d'interpréter #TEXTE, car personne ne sait mieux que l'auteur du squelette quel est le niveau adéquat.

Pour l'archive : je n'ai jamais dit non plus qu'on devrait passer à HTML5 obligatoire (c'est beaucoup trop tôt), mais c'est hors-sujet ici donc je ne développerai pas. URL: http://article.gmane.org/gmane.comp.web.spip.devel/61491

#6 Mis à jour par Fil _ il y a plus de 6 ans

  • Version cible changé de 3.0 à 3.1

(moi je suis pour tout passer en HTML5 dès que possible)

#7 Mis à jour par cedric - il y a presque 4 ans

  • Version cible changé de 3.1 à 3.2

HTML5 ne résoud rien car si la spec dit en effet que chaque section a son propre niveau d'intertite, en pratique ça reste le plan de la page dans son ensemble qui fait foi pour le SEO

#8 Mis à jour par tetue tetue il y a presque 4 ans

C'est moins un problème de SEO que d'accessibilité. Omettre un niveau de titre rompt la navigation par titres (par exemple avec une synthèse vocale), rendant difficile l'accès aux contenus des niveaux inférieurs. Concrètement, certains de ces utilisateurs passent à côté de tout ou partie du contenu. Cela relève d'un critère d'accessibilité de niveau A, c'est-à-dire bloquant.

Il y a certes, pour les webmestres avertis, la possibilité de corriger cela (via plugin ou autre).
Cela dépend aussi de la hiérarchie des titres du squelette en vigueur.

Mais il serait préférable d'éviter cette erreur par défaut, dans la distribution du SPIP natif :
- soit (peu pertinent) en ajoutant un h2 de principe avant chaque champ #TEXTE des squelettes de contenu de la dist ;
- soit (mieux) en corrigeant le code généré par défaut, comme suggéré en premier lieu dans ce ticket.

NB : le HTML5, qui autorise l'utilisation exclusive de titres de niveau 1, manque de support sur ce point et n'est donc pas une solution, effectivement.

#9 Mis à jour par nico d_ il y a 2 mois

Je relance sur ce ticket.

Je ne comprends pas pourquoi on n'est pas encore en H2 par défaut pour les intertitres.
A part l'entropie, y'a t'il une vraie raison ?

Sur tous les sites que je mets en route, je commence par déclarer les deux globales.

(et le HTML5, c'est un autre sujet)

#10 Mis à jour par chan kalan il y a 2 mois

+1
est-ce que ça demande de revoir le squelettes-dist ?

#11 Mis à jour par RastaPopoulos ♥ il y a 2 mois

Par rapport à la proposition au tout début de configuration dans l'interface, j'ai plutôt l'impression que c'est comme pour la configuration "html5" : c'est le jeu de squelette utilisé par le site (celui par défaut ou un autre) qui doit définir ses besoins.

Les administrateurices, par défaut on n'a pas à préjuger du fait qu'ils savent de quoi il retourne, qu'illes connaissent le HTML, etc. Non, par défaut ce sont juste des admins, qui configurent, activent des fonctionnalités, et valident des contenus : aucun rapport avec la technique.

Donc le HTML5 devrait être défini en PHP par le jeu de squelette.
Et le niveau des intertitres des #TEXTE de même, puisque c'est le jeu de squelette qui sait quelles balises précèdent ces textes dans le code (h1, h2…).

Par défaut le noyau pur n'a pas de squelettes, donc il doit mettre h2, et si la dist a déjà un h2 avant le texte principal (ce qui n'est pas le cas je crois) elle doit redéfinir, et pareil pour tout autre squelette.

#12 Mis à jour par nico d_ il y a 2 mois

Pour moi, rien à modifier dans la dist.
Il y a des H2 dans la dist, qui introduisent des listes d'articles, de résultats, ou des blocs (forum), je pense qu'ils peuvent rester comme ça.

Mais pour le contenu texte, ça passe de H1 (titre de l'article) à H3, comme sur les sites Spipr, comme sur la plupart des squelettes.
Et c'est moche. Très.

Dans html5_landed j'ai défini les globales sur H2, comme sur tous mes sites, mais je crois que c'est un des seuls html5up (pas tout regardé non plus).
https://zone.spip.org/trac/spip-zone/browser/_squelettes_/html5up_landed/html5_landed_options.php

Je serais pour définir les intertitres en H2 par défaut, point.
Et pas de config, celui qui veut peut utiliser les globales comme actuellement.

#13 Mis à jour par b b il y a 2 mois

Il y a des H2 dans la dist, qui introduisent des listes d'articles, de résultats, ou des blocs (forum), je pense qu'ils peuvent rester comme ça.

Si le bloc de forum sous le texte de l'article reste en h2, il va se retrouver "au même niveau" qu'un intertitre en h2 donc, c'est pas top non ?

#14 Mis à jour par nico d_ il y a 2 mois

Je sais pas, ça ne me choque pas trop non plus.
Sinon un <p class="h2"> ? C'est pas top pour le "séparer" sémantiquement du contenu de l'article.

On peut trouver autre chose de plus sémantique en html5, en faisant une section, mais là c'est les gros travaux (ou pas ?)

#15 Mis à jour par tetue tetue il y a environ un mois

Je répète : la version de HTML n'a aucune incidence là-dessus, la gestion des titres restant la même en HTML5. Donc osef HTML5 ou pas.

b_b : que d'autres blocs de la page soient du même niveau que les intertitres du contenu reste toujours moins pire que de passer à côté du contenu.
nico d_ : un <p class="h2"> n'a aucune valeur sémantique de séparation. À oublier.

Pour mémoire, sur les dommages causés et les correctifs possibles : http://romy.tetue.net/corriger-intertitre-SPIP

Formats disponibles : Atom PDF