Intertitres hiérarchiques

Intertitres pour le porte plume

Nativement la syntaxe SPIP ne propose qu’un seul niveau de titre. Le niveau de départ h3.spip est configurable depuis le fichier d’options xxx_options.php, en utilisant les variables de personnalisations :

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

Ce plugin ajoute au porte plume de spip la gestion de niveaux de titres supplémentaires, en prenant en compte le niveau de base configuré dans SPIP ou mes_options.php.

Le plugin reprend les syntaxes proposées par Enluminures typographiques V3 et Intertitres hiérarchisés et table des matières :

  • soit {{{*** pour les intertitres simples de différents niveaux
  • {{{### pour les titres de type référence universitaire. Ex:1.1, 1.1.2.

Les icônes affichées dans le porte plume (barre typographique), reflète le niveau sémantique au sens HTLM pour sensibiliser le rédacteur à son plan de page, et s’adapte en fonction de la globale spip $debut_intertitre.

Différences avec les plugins Enluminures typographiques V3 et Intertitres hiérarchisés et table des matières

  • Ce plugin utilise textwheel , ceci permettant entre autre :
    • de pouvoir surcharger les wheels déclarées pour un besoin spécifique,
    • tester et maintenir plus facilement les expressions/ étudiées/raccourcis traités.
    • utiliser les fonctionnalités de SPIP 3.
  • il ne gère que les titres et ne crée pas de sommaire.
  • une syntaxe additionnelle expérimentale permet d’ajouter des attributs aux titres (classes CSS, id spécifique, data-xx). Cette syntaxe est reprise de celle proposée par Markdown Extra.

Plugins compatibles

Etant donné que le plugin ne crée pas de sommaire, il est totalement compatible avec le plugin Sommaire automatique qui produit un sommaire de l’article.

Syntaxe & raccourcis

Il n’est plus possible (depuis la version 1.2.0) de mélanger dans un même article la syntaxe des titres et des références: ça n’a d’ailleurs aucun sens. C’est la syntaxe du premier titre rencontré qui déterminera l’interprétation de la suite des titres et intertitres. Par exemple, il suffit de choisir {{{# Référence }}} comme premier titre pour que tous les autres titres et intertitres soient interprétés comme des références.

Raccourci Description
{{{* … }}} équivalent au raccourcis spip intertitre {{{…}}}. h2 ou h3 suivant spip_debut_intertitre
{{{** Titre}}} h3 ou h4
{{{*** Titre}}} h4 ou h5
{{{**** Titre}}} h5 ou h6
{{{***** Titre}}} h6 ou div.h7
{{{# Référence }}}
{{{## Référence }}}
{{{### Référence }}}
{{{#### Référence }}}
Attributs par défaut les classes hx et rx sont ajoutées automatiquement
{{{ Titre }}}{.test-class1 .test--extender} Ajouter des attributs css supplémentaires aux titres
{{{ Titre }}}{#id_du_titre} Insérer un identifiant unique
{{{ Titre }}}{attribut="valeur attribut" data-appear="left" itemprop="name"} Insérer des attributs libres

A savoir

Si les icônes du porte plume n’apparaissent pas après l’activation du plugin, supprimez les dossiers /local/cache-css et js.

Le plugin étant en développement, si vous avez installé une version précédente, il peut être nécessaire de supprimer le dossier /tmp/cache/wheels, pour que les traitements typo soient pris en compte.

Participation & todo

Le plugin est disponible sur le dépôt Gitea. Tout retour est apprécié : suggestions, tests, bugs, idées d’amélioration, pull request.
Bugs et retours sur le forum de l’article ou en utilisant les tickets associés au dépôt sur Gitea : https://git.spip.net/spip-contrib-extensions/porte_plume_intertitres/issues

A partir de la version 1.2.0, la refonte du code permet de est facilement envisager de proposer des modèles de numérotation pour les titres de type référence via une constante ou un variable de configuration.

Discussion

2 discussions

    • Hello,

      Non aucune ;-) j’ai toujours utilisé sur des sites en define h2, c’était ainsi dans le plugin pour conserver le comportement standard de spip.

      Donc aucun soucis.

    • Peut être avec un test sur la version de SPIP pour ne pas péter des sites ?
      Ou bien go direct #H2_for_all ?

    • Honnêtement je n’ai jamais compris que l’on commence par un h3 la structure sémantique du contenu de l’article, J’ai donc toujours surchargé en h2.

      De mémoire je crois que c’était surtout pour la compat avec la dist de spip, mais ne l’utilisant pas et surchargeant la totalité, ou utilisant un spip-reset à la place ... je dirais que je suis pour un h2 en standard ^^.

      aussi l’idée était de ne pas rajouter une config pour ça, dans le plugin comme il y’avait dans typo enluminée, ou le CS ...

    • je dirais pour ma part de quand même tester la version de SPIP pour pas peter. On suit la logique de SPIP, même si elle nous semble illogique.

    Reply to this message

  • 5

    Merci pour ton plugin. Bien pratique.

    Une remarque : pour chaque intertitres (h2, h3, etc.) tu remplaces la class “spip” par le nom du tag.
    Ainsi <h3 class='spip'> devient <h3 class='h3'>.
    Du coup cela casse/modifie l’affichage puisque la CSS h3.spip{…} n’est plus prise en compte.

    Il y a t-il une raison à ce choix ?

    Cheers

    • Hello

      Merci pour le retour.

      De mémoire, la raison est que à l’époque c’était le standard spip ;-)

      ça peut se surcharger depuis mes options en utilisant les globales

      https://github.com/mistergraphx/porte_plume_intertitres/blob/master/porte_plume_intertitres_options.php

      Une évolution serait de pouvoir spécifier la classe depuis la config si on utilise un framework (bootstrap ou autre).

      Quel serait ton besoin ou idée sur le sujet ?

    • Yop,

      La surcharge via /porte_plume_intertitres_options.php ne marche pas.
      En cause qqs instructions dans /porte_plume_intertitres/wheels/porte_plume_intertitres.php

      Du coup, juste pour tester, j’ai forké ton plugin + et modifié ce fichier.
      Voir la modif.

      Une évolution serait de pouvoir spécifier la classe depuis la config si on utilise un framework (bootstrap ou autre).

      Oui ! Du coup là config pourrait proposer :
      -  la valeur du tag (pour pas chambouler les installs existantes )
      -  ’spip’ (parce que quand même, cela remet le plugin compatible avec la dist)
      -  champ input où l’utilisateur pourrait saisir ce qu’il veut.

      Je veux bien te donner un coup de main si tu veux ?
      Faudrait juste virer les notices PHP existantes en l’état. Sur ce point, je préfère te laisser la main…

    • Voui le “stantard spip” c’est pas le nom de la balise en classe, c’est bien plutôt “spip” justement, pour être raccord avec la dist et ce que produit la syntaxe légère de SPIP de base.

      Il me semble que ça devrait donc produire hX.spip à chaque fois par défaut.

    • Est ce que cette modification peut avoir des conséquences su l’existant ou pas ?

      Sinon, c’est une ligne de code à changer, je peux commiter quand on souhaite.

    • Si ça casse de l’existant c’est qu’il était conçu bizarrement (du genre des gens qui ne stylent QUE les classes CSS et jamais les vraies balises HTML h2, h3, etc, ce qui est hautement improbable).

      Donc non en théorie pour 99,9% des sites ça casse rien (à commencer par la dist), puisque les thèmes styles les balises de titres avant tout.

    Reply to this message

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom