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

2 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

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