Warning: md5_file(local/cache-js/jsdyn-socialtags_js-8d8d06d2.js.last): failed to open stream: No such file or directory in /home/elerium/www/ecrire/inc/filtres.php on line 3047

Warning: Illegal string offset 'lang' in /home/elerium/www/plugins/ckeditor-spip-plugin/ckeditor_fonctions.php on line 423

Warning: Illegal string offset 'statut' in /home/elerium/www/plugins/ckeditor-spip-plugin/ckeditor_fonctions.php on line 465

Warning: Illegal string offset 'statut' in /home/elerium/www/plugins/ckeditor-spip-plugin/ckeditor_fonctions.php on line 466

Warning: Illegal string offset 'statut' in /home/elerium/www/plugins/ckeditor-spip-plugin/ckeditor_fonctions.php on line 466

Accueil > Arteractive > Revue d’art numérique > Tutoriaux, HowTO et DIY > SPIP, astuces et aide-mémoire

SPIP, astuces et aide-mémoire

jeudi 23 décembre 2010, par Auguste LY

Introduction


Le site d’Arteractive utilise à fond le système de boucle de SPIP qui permet de littéralement sculpter notre contenu comme bon nous semble. Ses nombreuses fonctions internes, ses systèmes de tri/filtre et sa structure reliant articles et médias externes tels que images, videos, liens, audio etc... nous permettent de faire quasiment tous ce que l’on veut. En y ajoutant le plugin Bonux, la possibilité d’afficher des blocs sous certaines conditions en fait alors un CMS redoutable dans lequel on y établit des règles d’affichages logiques assez simplement. A l’heure de l’ajax, on regrettera l’interface administrateur qui est assez lent. Même si la communauté de SPIP est active et que l’on trouve quand même beaucoup de documentation sur ses fonctionnalités, il n’est pas toujours évident de trouver les astuces pour des cas de figures particuliers. Ce tuto a pour but de lister certaines astuces en guise d’aide-mémoire. Testé sous Spip 2.0.8

Ajouter un type de document


http://www.spip.net/fr_article2002.html

Multilinguisme


Un très bon tutoriel à cette adresse : http://www.guiderdoni.net/SPIP-et-le-multilinguisme.html

Multilinguisme à la volée pour site bilingue


Aussi, je voudrais rajouté quelques informations pour le cas d’un site bilingue comme celiu d’Arteractive.net, où toute la structure du site est identique quelque soit la langue, où des articles ne sont pas forcément encore traduits. Dans ce cas, Spip afficherait l’article de la langue d’origine non traduit. Il incombera donc au visiteur ou au navigateur de traduire automatiquement la page.


La gestion des langues sous Spip se fait généralement en dupliquant une arborescence de site avec des rubriques et des articles traduits. Mais dans notre cas, ce sytème est trop lourd pour la gestion de 2 langues où tout les articles ne seront pas forcément systématiquement traduits. De plus, cela devient complexe à première, si on doit aussi gérer les images ou autres médias joints à un article.


En utilisant les blocs <multi> de cette manière : <multi>[fr]Mon titre[en]My title</multi>, on peut tout traduire à la volée dans le même champs de texte que pour la langue d’origine. Ces blocs fonctionnent partout, que ce soit pour des légendes d’images, des mots-clés, des rubriques, des articles, etc...


Pour que cela fonctionne, il faut cependant rajouter dans chacune de nos boucles le critère "lang_select=non", ce qui permet de ne pas vérifier la langue par défaut de la rubrique ou de l’article et de se caler directement sur les blocs "<multi>" qu’on aura inséminer partout.


Enfin dernière chose, la variable d’environnement "lang" n’étant pas mémorisé de cette manière, les liens pointeront du coup systématiquement vers la langue d’origine car la paramètre "&lang=en" est absent.


Pour palier à cela, il y a 2 solutions possibles.


Sans être un expert dans le domaine, en ce qui concerne la meilleure solution pour le référencement, il me semble que la méthode des sous-domaines est la meilleure car il suffit d’être dans le sous-domaine pour que tout les articles soient en anglais (dans notre cas).


En bonus, on peut aussi tenter de rediriger automatiquement vers le site de la langue du navigateur. Par exemple, on pourrait écrire un fonction en PHP qui vérifierait si la langue est "fr", il continue dna sle domaine par défault, sinon il bascule dans le sous domaine anglais. Quelques exemple ici : http://modxcms.com/forums/index.php?topic=36059.0 à adapter à Spip. On peut aussi tenter de le faire avec du URL rewriting. Voici une piste à explorer : http://www.gidforums.com/t-1572.html


 

Supprimer la récursivité de la balise #LOGO_RUBRIQUE


Lorsqu’une rubrique n’as pas de logo et que la balise #LOGO_RUBRIQUE est appelé, Spip va automatiquement chercher dans la rubrique mère tant qu’il n’en trouve pas. Pour éviter cela, il suffit d’utiliser la syntaxe suivante :

[(#LOGO_RUBRIQUE||matchrubon#ID_RUBRIQUE\.|oui)#LOGO_RUBRIQUE]


Explication : on n’affiche le logo de la rubrique que si dans la balise img créée par #LOGO_ on retrouve la portion « rubonxx. » (où xx représente l’id de la rubrique en cours).


 

Enlever le sommaire automatique dans balise texte


Lorsque le plugin sommaire automatique du couteau suisse est activé, un sommaire est crée partout où la balise #TEXTE est appelé. Pour créer une exception dans notre squelette, il suffit de remplacer #TEXTE par :

[(#TEXTE*|concat#EVAL_CS_SANS_SOMMAIRE|cs_traitementsTEXTE,articles)]


Explication : l’étoile de la balise empêche tout traitement SPIP et renvoie le texte brut stocké en base de donnée, le filtre ’|concat ’ ajoute au texte brut ’[!sommaire]’ pour empêcher la création future d’un sommaire, puis le filtre ’|cs_traitement’ du Couteau Suisse rétablit les traitements originaux de SPIP correspondant à la balise ’#TEXTE’ et aux objets ’articles’.


 

Plugin "Champs extras 2" pour Spip 2


Pour une raison inconnue, ce plugin a fonctionné puis ne fonctionne plus, c’est-à-dire que lorsqu’on ajoute des champs avec l’interface de configuration, ceux-ci n’apparaissent pas dans notre rubrique ou article concerné. Entre-temps, j’ai dû updaté ma version de Spip de 2 quelques chose vers 2.0.8 ou bien installé divers plugins.


Quoiqu’il en soit, on peut tout de même rajouter des champs en passant par phpMyAdmin. Par exemple si on veut rajouter un champ "VARCHAR 100" à une rubrique, il suffit de l’ajouter dans la table "spip_rubrique".


Une fois avoir ajouter manuellement les champs, ils n’apparaîtront toujours pas avant qu’on ne l’ai mis à gérer par le plugin Champs Extra. En allant dans son interface de configuration, on peut voir une section "Liste des champs présents non gérés" et on devrait normalement y voir les champs ajoutés précédemment. Il suffit à présent de cliquer sur "Gérer ce champs" puis de le modifier pour renommer son label par exemple.


Ce nouveau sera alors accessible dans notre squelette via la balise portant le même nom.

Critère exclure pour les boucles

Expressions régulière pour les boucles


Des critère super pratique. Il s’agit des expressions régulières dans les boucles spip.

{id_groupe!==^(9|10|7)$} ou {!titre_mot IN mot1,mot2}

 ! : not
== : regexp
^ / $ : debut/fin de l’expression
( ... | ... ) : alternative

<BOUCLE_documents_joints(DOCUMENTS){id_article}{titre!==^spip\_}{mode=document}{doublons}>


Le critère titre !==^spip\_ est une expression régulière, dont la syntaxe est très codifiée.On sélectionne les documents dont le titre n’est pas formé ainsi (le !== signifie « qui necorrespond pas à l’expression régulière ») : les premiers caractères (le symbole ^ indique ledébut de la chaîne de caractères) sont « spip » suivi de « _ » (dans la syntaxe des expressionsrégulières, « \_ » indique le caractère « _ », de la même façon que « \. » indique le caractère« . »).Ce critère sélectionne donc les documents joints dont le titre ne commence pas par « spip_ »


À l’intérieur d’une boucle RUBRIQUES, nous allons effectuer le test suivant : est-ce qu’ilexiste, dans cette rubrique, au moins un article dont le titre commence par un numéro suivid’un point ?



        <BOUCLE_test_numero(ARTICLES){id_rubrique} {titre==^[0-9]+\.} {0,1}>

Il existe un article numéroté dans cette rubrique

</BOUCLE_test_numero&gt;Il n'y a pas d'article numéroté<//B_test_numero>



Le critère intéressant ici est : titre==^[0-9]+\.
Il s’agit d’une sélection sur le titre , selon une expression régulière
(« == » indique unesélection selon une expression régulière) dont la syntaxe est : au début du titre (« ^ » indique le début de la chaîne testée), il y a un ou plusieurs (« + » indique « au moins un descaractères précédents ») caractères compris entre 0 et 9 (« [0-9] » signifie « caractèrescompris entre 0 et 9 inclus »), suivis du caractère « point » (« \. »).Notez enfin qu’on ne sélectionne qu’un seul article ainsi numéroté ( 0,1 ) ; de cette façon,l’intérieur de la boucle ne sera effectué qu’une seule fois. De plus, il suffit qu’il existe un seularticle numéroté pour provoquer l’affichage d’une liste par ordre « numéroté ».Cette boucle affiche ainsi « Il existe un article numéroté dans cette rubrique » s’il y a aumoins un article dont le titre est précédé d’un numéro dans la rubrique, et « Il n’y a pasd’article numéroté » sinon.Il suffit maintenant d’installer à la place de ces mentions des boucles d’affichage des articlesselon l’ordre de présentation désiré :

<ul>
<BOUCLE_test_numero(ARTICLES){id_rubrique} {titre==^[0-9]+\.} {0,1}>
<BOUCLE_ordre_numeros(ARTICLES){id_rubrique} {par num titre}>
<li>[(#TITRE|supprimer_numero)]</li>
</BOUCLE_ordre_numeros>
</BOUCLE_test_numero>
<BOUCLE_ordre_date(ARTICLES){id_rubrique} {par date}{inverse}><li>#TITRE<li>
</BOUCLE_ordre_date>
<//B_test_numero>
</ul>

Portfolio

Un message, un commentaire ?

Qui êtes-vous ?
Votre message
  • Pour créer des paragraphes, laissez simplement des lignes vides.