Plugin Encarts

Ce plugin permet d’ajouter des « encarts » [1] à vos articles SPIP. Les encarts sont de petits textes qui viennent compléter un article, et qui peuvent apparaitre, soit au cœur du texte, soit dans la marge [2].

Le plugin encarts coté rédacteur

Une fois le plugin installé, vous pouvez ajouter un ou plusieurs encarts à vos articles SPIP.

Vous disposez de 2 types d’encarts :
-  les encarts simples écrits directement à l’intérieur du texte (et qui ne pourront s’afficher qu’à l’intérieur du texte)
-  les encarts de type « objet SPIP » saisis depuis l’interface privée (qui pourront s’afficher, soit à l’intérieur du texte, soit dans la marge ou ailleurs, tel que défini par le graphiste dans le squelette)

1) Encarts simples

Pour ajouter un nouvel encart simple, dans le corps du texte :
-  éditez le corps du texte de l’article
-  choisissez, au sein du texte, l’endroit où votre encart doit apparaître
-  rédigez y votre encart, puis entourez-le d’une balise <encart> et </encart>
-  ça doit donner quelque-chose semblable à ceci :

<encart>À lire dans la presse : «Biographie d'Adolphe Thiers, bourreau de la commune de Paris»</encart>


-  cliquez sur « enregistrer »
-  votre nouvel encart apparait au sein du texte de votre article !
-  vous pouvez ajouter autant d’encarts de ce type dans votre article
Attention ! cette balise <encart> sera remplacée par SPIP par une balise de type <span> afin de pouvoir être insérée dans les paragraphes de texte (balises <p>) ; ainsi, la mise en forme que vous mettrez dans ce type d’encart doit uniquement comporter des balises de type « en ligne » ; vous devez donc éviter les balises de type titres <hx>, les doubles sauts de ligne, les notes de bas de page, les éléments <docxx>, <videoxx>...
Nota 1 : cette méthode diffère très peu de celle employée par d’autres plugins ajoutant des mises en forme au sein des textes d’article.
Nota 2 : les encarts de type "simple" insérés dans votre article par cette méthode ne pourront pas apparaitre dans d’autres articles.

2) Encarts « objet SPIP »

Dans la partie privée de SPIP, en bas de chaque article, vous disposez d’un bouton nommé "Ajouter un encart" qui vous permet d’ajouter un nouvel encart de type « objet SPIP » dans la base de donnée SPIP.

Chaque encart porte un identifiant unique (un numéro) permettant de le manipuler comme tout objet SPIP : on peut ainsi l’afficher et le placer dans les squelettes grâce aux boucles SPIP.
Mode opératoire pour ajouter un encart en base de données :
-  se déplacer à la fin de l’article
-  cliquer sur le bouton « ajouter un encart »


-  remplissez le titre (éventuellement) et le texte de l’encart
-  vous pouvez utiliser tous les raccourcis de SPIP pour la mise en forme du texte, y compris ajouter des liens ou des images
-  cliquez sur le bouton « enregistrer »
-  votre nouvel encart apparait au dessous de l’article, dans le bloc des encarts


-  vous pouvez ajouter autant d’encarts de ce type à un article
Nota : l’affichage de l’encadré sur le site public se gère dans le squelette ! Si le squelette ne prévoit pas explicitement l’affichage de l’encadré, celui-ci ne s’affichera pas !

Pour afficher un encart de type « objet SPIP » dans le corps du texte
À l’intérieur du texte d’un article, il est possible d’afficher un encart provenant de la base de données SPIP, grâce au modèle <encartXXX>, XXX étant l’identifiant de l’encart ; voici la marche à suivre :
-  vous avez déjà saisi un encart, et connaissez son numéro (imaginons que vous souhaitiez placer l’encart N°159)
-  éditez le corps du texte de l’article
-  choisissez l’endroit où devra apparaître votre encart
-  insérez l’encart avec le code <encart159>


-  cliquez sur « enregistrer »
-  SPIP va remplacer ce code par un appel à l’encart qu’il ira chercher en base de données

Nota 1 : afin d’éviter qu’un encart soit présent par inadvertance, à la fois dans le corps du texte et ailleurs dans le squelette [3] les encarts déjà présents dans le corps du texte disposent d’un statut spécial ; ce statut s’appelle « vu » et sa valeur passe à « oui » lorsque l’encart est appelé depuis le corps du texte ; ainsi dans les squelettes on pourra choisir de n’afficher dans la marge que les encarts qui ne sont pas déjà présents dans le corps du texte, et dont le statut sera « vu=non »

Nota 2  : comme chaque encadré porte un numéro unique, il peut être inséré dans le corps d’un autre article que son article parent ; l’encadré <encart63> peut ainsi être placé dans tout article du site avec ce code.

Coté intégrateur : le plugin encart dans les squelettes

Le plugin crée un nouvel objet SPIP de type encart. Cet objet est composé des champs suivants, qui pourront être récupérés dans des boucles <BOUCLE_encart(ENCARTS)> :
-  id_encart
-  date
-  titre
-  texte

Les encarts sont liés aux articles, et pour récupérer les encarts d’un article on utilise le critère {id_article} dans les boucles. Ce qui donne par exemple pour récupérer tous les encarts liés à l’article 876 : <BOUCLE_encarts(ENCARTS){id_article=876}>.

Comme on l’a vu, pour éviter d’afficher 2 fois un encart sur une page, si l’auteur a souhaité insérer son encart au sein du texte, SPIP attribue à l’encart en question le statut « vu » à « oui ». Il suffit donc d’ajouter ce critère dans la boucle, ce qui donne : <BOUCLE_encarts(ENCARTS){id_article=876}{vu=non}>.

Les encarts qui sont insérés par l’auteur dans son texte, possèdent la class interne, ce qui permet de styler ces encarts différemment des encarts placés dans un autre bloc par exemple.

Installation et dépendances

Le plugin Encarts s’installe depuis l’interface privée, de la manière classique :
-  configuration > Gestion des plugins
-  bouton « Ajouter des plugins » ; vérifiez que vos listes de plugins soient bien à jour
-  descendre sur « Encarts », cliquez sur la flèche pour télécharger
-  cliquez sur « suivant » pour installer et encore sur « suivant » pour activer
-  gogogo ! Les encarts sont disponibles pour votre site !

Nota : le plugin « Encarts » nécessite 2 plugins utilitaires pour fonctionner :
-  afficher objets, optimisant l’affichage des objets SPIP dans l’interface privée
-  saisies, facilitant l’écriture des formulaires SPIP

Limites & Évolutions

Le plugin insère un <span> s’il trouve le code <encart> dans le texte ; cela évite l’ajoute de balises block dans les paragraphes SPIP du texte. A terme il faut remplacer cet inclusion de span par une inclusion de div, tout en détectant si on est pas déjà dans un paragraphe.

A terme, gérer le placement d’un encart par l’emploi éventuel de « left », « center » ou "right en paramètre de la balise : <encart159| left>.

Notes

[1le terme employé dans le monde de l’édition papier serait plutôt « encadrés »

[2marge = colonne gauche ou droite ; l’encart peut apparaitre aussi au dessus, au dessous, etc. comme l’a défini le webdesigner

[3dans une colonne ou un bandeau... ou tout autre endroit de la page choisi par le webdesigner pour faire apparaitre les éléments d’une boucle encarts

Discussion

16 discussions

  • Bonjour,

    J’ai découvert une petite coquille dans la dernière version de ce plugin (3.0.0). Il provoque chez moi des erreurs 500 dans l’espace privé lorsque je veux enregistrer/mettre à jour d’autres objets comme des articles, mots clés, plugins, etc. (voir pièce jointe)

    J’ai procédé par élimination en désactivant tous les autres plugins.

    Mon environnement est :
    Version php 8.0.23
    Version Spip 4.1.7

    Merci d’avance pour vos retours !

    Répondre à ce message

  • Bonjour,
    Je viens de passer mon site (spip 3.2.7 + sarkaspipr) en PH7 et je rencontre cet avertissement :

    Dans l’interface privé :
    Notice :

    Undefined index: in /var/www/alternc/nom/www/nom.org/plugins/auto/encarts/v2.3.1/encarts_pipelines.php on line 56

    concerne la partie :

    	// encarts sur les objets configurés
    	if (!$e['edition']
    		and is_array($tables_objets)
    		and in_array(table_objet_sql($e['type']), $tables_objets)
    	) {
    		$texte .= recuperer_fond('prive/objets/editer/liens', array(
    			'table_source' => 'encarts',
    			'objet' => $e['type'],
    /*ligne 56*/	'id_objet' => $flux['args'][$e['id_table_objet']],
    		));
    	}

    et en public :

    Warning: max(): When only one parameter is given, it must be an array in /var/www/alternc/c/nom/www/nom.org/tmp/cache/skel/html_9513a7608fffd04e5f9048d29beb94ae.php on line 162

    voici la ligne du cache :

    (($t2 = strval(max(min(table_valeur($Pile["vars"], (string)'width', null),'120px'))))!=='' ?

    et le cache désactivé :

    Warning: max(): When only one parameter is given, it must be an array in /var/www/alternc/c/nom/www/nom.org/ecrire/public/composer.php(92) : eval()'d code on line 155

    le code en question :

    function squelette_traduit($squelette, $sourcefile, $phpfile, $boucles) {
    
    	// Le dernier index est '' (fonction principale)
    	$noms = substr(join(', ', array_keys($boucles)), 0, -2);
    	if (CODE_COMMENTE) {
    		$code = "
    /*
     * Squelette : $sourcefile
     * Date :      " . gmdate("D, d M Y H:i:s", @filemtime($sourcefile)) . " GMT
     * Compile :   " . gmdate("D, d M Y H:i:s", time()) . " GMT
     * " . (!$boucles ? "Pas de boucle" : ("Boucles :   " . $noms)) . "
     */ ";
    	}
    
    	$code = '<' . "?php\n" . $code . join('', $boucles) . "\n?" . '>';
    	if (!defined('_VAR_NOCACHE') or !_VAR_NOCACHE) {
    		ecrire_fichier($phpfile, $code);
    	}
    
    	return $code;
    }

    la ligne 155 correspond à

    return $code;

    peut- être la notice et le warning sont liés ou pas.
    Merci d’avance pour votre éclairage.

    Répondre à ce message

  • 1

    Bonjour,

    @Manu, @pw, @jpcrea :
    J’ai corrigé le plugin pour une compatibilité SPIP 3.x. Je l’ai fait selon la documentation et la lecture du code. Si vous voyez des erreurs, merci de me faire signe. Je ferai de mon mieux pour le remettre à niveau.

    En tout cas, retour de l’interprétation des <encart> et des <marge>. Association d’encarts à la méthode classique de SPIP (un peu comme les mots-clés). Je ne suis pas sûr que ce point là reprenne ce que vous attendiez. J’ai fait rentrer le plugin dans le « moule » de l’espace privé de SPIP.
    Il faut voir maintenant si cela est pertinent pour vous.

    cf. http://zone.spip.org/trac/spip-zone/changeset/100136
    http://zone.spip.org/trac/spip-zone/changeset/100137

    Répondre à ce message

  • Bonjour,
    j’ai un petit problème :
    si je met un encart dans une rubrique alors dans la liste des objets liés toutes les rubriques du site apparaissent et pas seulement celle où il est.
    Avez-vous une idée ?
    Merci

    Répondre à ce message

  • Ne fonctionne pas avec SPIP 3.1.
    Et aucune réponse de l’auteur(depuis Octobre 2013) aux différentes demandes.
    Dommage !

    Répondre à ce message

  • 1

    J’ai l’impression qu’il y a un souci avec la (les) dernières versions du plugin : les encarts insérés au fil du texte via les raccourcis <encart>bla bla bla </encart> ne sont pas transformés en « encart ».
    Je m’arrache les cheveux depuis des heures là-dessus, fait des svn up dans tous les sens, désactive les plugins etc... rien n’y fait
    En regardant de plus près, je remarque que

    • le fichier paquet.html ne déclare plus le pipeline post_type
    • le fichier encarts_pipeline.php ne comporte plus la fonction encarts_post_typo.

    Si je rétablis ça, ça fonctionne de nouveau...

    • ... Alors, est-ce que le truc, c’est que j’installe tous mes plugins par svn. Pour SPIP 3.0, dans la très grande majorité des cas, c’est la version « trunk » qu’il faut installer.
      Dans le cas précis de « encarts », la « branche trunk » ayant apriori abandonné la gestion des encarts au fil du texte, il faut alors installer la branche « branches/v2.0 » dont le nom est un peu trompeur (pour faire vite, on se dit, trunk c’est pour SPIP 3, v2.0, à doit être pour SPIP 2.
      Autant pour moi, donc (et désolé du bruit)

    Répondre à ce message

  • Bonjour

    je teste ce plugin sur un Spip 3.1 et il me rajoute bien un objet « encarts » dans le menu édition.

    Cependant pas de trace d’un bouton « ajouter un encart » dans l’édition des articles, ni de modèle pour les afficher (d’ailleurs pas de répertoire modèles dans le plugin).

    C’est-y que la 3.1 pose souci ? ou que je devrais avoir un bouton mais que peut-être un autre plugin est en conflit ? Ou qu’il y a une config à faire quelque part ?

    Merci de m’éclairer ;-)

    Répondre à ce message

  • 1

    Bonjour,

    Ce plugin ne semble pas fonctionner avec la derniere version de Spip.
    Le formulaire d’edition ne fait pas apparaître les champs.

    Une idée pour réparer cela ?

    Répondre à ce message

  • benolaos

    Bonjour,

    Y a-t-il un moyen d’utiliser ce plugin sur des rubriques ?
    Je suis en SPIP v3, et cherche à intégrer un encart dans un squelette.
    Et ce plugin est EXACTEMENT ce qu’il me faudrait !

    En vous remerciant

    Répondre à ce message

  • 6
    Anne-Gaëlle TESTARD

    Bonjour,

    Existe-t-il une version du plugin Encarts pour Spip 3 ou quelque chose d’équivalent ?

    Merci

    • Bonjour,
      Une version beta de encarts pour SPIP3 est publiée ; je l’ai testée rapidement sur un site de développement et n’ai pas noté d’anomalies pour la création / suppression des encarts depuis un article ; en revanche il reste à traiter le pipeline qui remplace le code <encart> (fonction encarts_pre_propre()).

      http://zone.spip.org/trac/spip-zone/browser/_plugins_/encarts/trunk

    • Bonjour Cyril,
      Pour un site qui vient de migrer sous SPIP3, je souhaitais utiliser « encarts » pour insérer des encarts (!) au fil du texte via la paire de balises<encart>bla bla bla</encart> mais, en lisant la doc, qu’est-ce que je vois, aaarrrgggh ! damned, c’est le bout qui manque actuellement…

      Alors, je me suis fait une rustine de dépannage en installant la fonction encarts_pre_propre dans mes_fonctions.php et j’ai appliqué dans mes squelettes le filtre encarts_pre_propre sur les balises visées.

      OK, ça fonctionne mais c’est bien sûr beaucoup moins bien que si le plugin encart faisait le boulot…
      Que faudrait-il faire pour activer le « bout qui manque » était compliqué à faire… Ça m’intéresserait de me pencher sur le truc parce que j’ai l’impression que ça ne doit pas être trop compliqué et que ça m’aiderait à comprendre comment marche un plugin, un pipeline etc...

    • Bonjour Manu,
      Une piste à suivre serait d’ajouter au plugin en version V2 la fonction encarts_pre_propre qui se trouve ici : http://zone.spip.org/trac/spip-zone/browser/_plugins_/encarts/branches/v1.3/encarts_pipelines.php#L31. Sans oublier de déclarer le pipeline dans le paquet.xml ici : http://zone.spip.org/trac/spip-zone/browser/_plugins_/encarts/trunk/paquet.xml

      Bonne programmation !
      et tiens nous au courant des résultats ;-)

    • …OK…
      1 - j’ai rajouté dans plugin.xml
      <pipeline nom="post_propre" inclure="encarts_pipelines.php"/>
      2 - j’ai rajouté dans encarts_pipelines.php la fonction encarts_pre_propre

      mais rien ne se passe, enfin, je veux dire que le remplacement de <encart> et </encart> ne se fait pas…
      Comment peut-on « suivre » ce que fait SPIP ? La question que je me pose est de savoir si, arrivé dans le pipeline « post_propre » (ou celui qui est déclaré dans paquet.xml), la fonction encarts_pre_propre est bien exécutée ? Comment puis-je savoir ça ?

    • Hello Manu,
      Tu y es presque ;-)
      Il faut que le nom du pipeline déclaré dans paquet.xml (attention, en SPIP3 c’est « paquet.xml » et pas « plugin.xml ») soit le même que celui de ta fonction.
      En l’occurrence d’après ce que tu écris, tu appelles le pipeline « post_propre » au lieu de « pre_propre ».
      Ensuite, il ne faut pas oublier de repasser sur la page /ecrire/ ?exec=admin_plugin afin que le fichier paquet.xml modifié soit pris en compte.

      Enfin, pour mettre au point ton code, tu peux y insérer des var_dump() pour faire afficher le contenu de variables ; bien veiller à les supprimer ensuite ;-)
      Une page d’astuces toujours utiles : http://www.spip.net/fr_article4453.html

    • OK… tu as tapé juste : je n’avais pas capté qu’il fallait repasser par ?exec=admin_plugin pour que les motifs de paquet.xml soient prises en compte. Merci !

      Pour compléter, j’ai modifié la fonction pour que le remplacement produise un div plutôt qu’un spam : on peut ainsi mettre des sous titres, paragraphes etc… bref se servir de la barre typo dans la rédaction de l’encart qui, sinon, part en vrille…
      J’ai l’impression qu’avec SPIP3 qui revu sa gestion du « paragraphage » du texte, l’utilisation de div doit poser moins de problème, non ?

    Répondre à ce message

Ajouter un commentaire

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
  • 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 apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom