Corriger le niveau d'intertitre #2381

Closed
opened 12 years ago by tetue · 20 comments
tetue commented 12 years ago
Owner

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

\n"; $GLOBALS['fin_intertitre'] = "

\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 : [

]

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

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` : <pre> $GLOBALS['debut_intertitre'] = "\n<h2 class=\"spip\">\n"; $GLOBALS['fin_intertitre'] = "</h2>\n"; </pre> 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 `##spip, ###spip {...}` comme cela se fait déjà pour s'assurer d'appliquer le style pareillement dans tous les sites, corrigés ou pas.

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

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

Version cible mise à 3.0

**Version cible mise à 3.0**
Owner

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

Je ne suis pas contre proposer un formulaire. Il serait à mettre où ? D'autres avis ?
b_b commented 12 years ago
Owner

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...

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...
davux commented 12 years ago
Owner

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

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
Fil commented 11 years ago
Owner

(moi je suis pour tout passer en HTML5 dès que possible)
Version cible mise à 3.1

(moi je suis pour tout passer en HTML5 dès que possible) **Version cible mise à 3.1**
cerdic commented 9 years ago
Owner

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
Version cible mise à 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 **Version cible mise à 3.2**
tetue commented 9 years ago
Poster
Owner

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":http://www.accessiweb.org/index.php/accessiweb-html5aria-liste-deployee.html#crit-9-1, 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.

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":http://www.accessiweb.org/index.php/accessiweb-html5aria-liste-deployee.html#crit-9-1, 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.
nicod_ commented 5 years ago
Owner

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)

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)

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

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

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.

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.
nicod_ commented 5 years ago
Owner

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.

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.
b_b commented 5 years ago
Owner

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 ?

> 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 ?
nicod_ commented 5 years ago
Owner

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 ?)

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 ?)
tetue commented 5 years ago
Poster
Owner

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

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
nicod_ commented 5 years ago
Owner

Au niveau des plugins qui gèrent des niveaux de titres dans la barre typo :

  • intertitres_hierarchises prend déjà en compte la constante pour calculer ses niveaux hiérarchiques :
    https://zone.spip.net/trac/spip-zone/browser/spip-zone/plugins/intertitres_hierarchises_et_table_matieres/trunk/intertitres_tdm_options.php#L76

  • porte_plume_enluminures_typographiques gère sa propre config

Pas de casse à ce niveau là donc.

Il serait temps de passer sur du H2 par défaut pour les intertitres, et de fermer ce ticket de sept ans.

Des avis contre ?

Au niveau des plugins qui gèrent des niveaux de titres dans la barre typo : - intertitres_hierarchises prend déjà en compte la constante pour calculer ses niveaux hiérarchiques : https://zone.spip.net/trac/spip-zone/browser/spip-zone/_plugins_/intertitres_hierarchises_et_table_matieres/trunk/intertitres_tdm_options.php#L76 - porte_plume_enluminures_typographiques gère sa propre config Pas de casse à ce niveau là donc. Il serait temps de passer sur du H2 par défaut pour les intertitres, et de fermer ce ticket de sept ans. Des avis contre ?
miros commented 5 years ago

Comme cela a été dit

"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"

Pour info (et juste pour info) je procède de la manière suivante (pour l'accessibilité) :

Cas 1 : Un article est présenté dans sa propre page :
Le titre de l'article est en #
Je détecte si le texte contient un intertitre (inséré avec porte plume ou bien un h3 saisi manuellement). Si c'est le cas, j'ajoute (avant le texte de l'article) un h2 avec comme titre "contenu" (on peut choisir un autre titre). Ceci évite de passer directement du h1 du titre de l'article au h3 contenu dans le texte de l'article.

Cas 2 : Un article est présenté comme sous-contenu :
Le titre de la PAGE en #
Le titre de l'article est en h2 (vu que c'est un sous contenu).
On passe donc sans problème du h2 (du titre de l'article) au h3 contenu dans le texte de l'article.

Comme cela a été dit > "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" Pour info (et juste pour info) je procède de la manière suivante (pour l'accessibilité) : Cas 1 : Un article est présenté dans sa propre page : Le titre de l'article est en # Je détecte si le texte contient un intertitre (inséré avec porte plume ou bien un h3 saisi manuellement). Si c'est le cas, j'ajoute (avant le texte de l'article) un h2 avec comme titre "contenu" (on peut choisir un autre titre). Ceci évite de passer directement du h1 du titre de l'article au h3 contenu dans le texte de l'article. Cas 2 : Un article est présenté comme sous-contenu : Le titre de la PAGE en # Le titre de l'article est en h2 (vu que c'est un sous contenu). On passe donc sans problème du h2 (du titre de l'article) au h3 contenu dans le texte de l'article.
cerdic commented 2 years ago
Owner

cf spip/textwheel#3
Version cible mise à 4.0

cf https://git.spip.net/spip/textwheel/pulls/3 **Version cible mise à 4.0**
cerdic commented 2 years ago
Owner

Statut changé à En cours

**Statut changé à En cours**
cerdic commented 2 years ago
Owner

Et c'est donc dans la 3.3 alea jacta est 57de289c88
Statut changé à Fermé

Et c'est donc dans la 3.3 alea jacta est https://git.spip.net/spip/textwheel/commit/57de289c88fae817058b501899d2fc0db150e941 **Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
11 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: spip/spip#2381
Loading…
There is no content yet.