SPIP 1.8, 1.8.1

From the first of April 2005, [SPIP 1.8] has been available at the address: www.spip.net/spip-dev/DISTRIB/.

This new release of SPIP comes after over a year’s work — as a matter of fact version 1.7 dates from January 2004. It is almost impossible to list all the new features in this article.

Huge efforts have been made — even with all the big changes (both visible and invisible) which have been made to most parts of the programme — to make the upgrade from older versions as easy as possible.

In any case, if you experience any problem with the installation or the upgrade, feel free to ask questions on the mailing list spip-en@rezo.net or to consult the community forums at http://forum.spip.org/.

The private area

The most easily noticed improvement is probably the new interface of the private area. This one has been re-designed from scratch, graphically and ergonomically to allow faster navigation and publishing.

Publishing tools

New tools have been introduced to assist the publication of articles:

Spell checking

The spelling errors in an article can be corrected through this tool, which relies on an external server to process the text.

Note: the spell checker is not installed on your «local» server, all the article words are sent (in random order) to the “spell-checking servers” developed by the SPIP Lab and set up by some members of the SPIP community. Webmasters wishing to avoid any “confidentiality” problems, can install the tool on their own server.


Articles submitted for evaluation can be previewed by administrators and (depending on the configuration) editors, as they will look in the site’s templates. This makes it possible to check an article’s layout without having to temporarily publish the article.

Version tracking

To facilitate editorial follow-up and to make it easier for people to work together on the same texts, [SPIP 1.8] introduces a version tracking system (developed by SPIP-Lab). It provides a list of recently modified articles, and shows the changes made between different versions of the same article.

The portfolio

[SPIP 1.8] introduces a new interface to manage the documents attached to an article. All the attached documents which are not inserted by the author in the text are displayed as thumbnails in the portfolio below the article.

This portfolio can be used to edit the document’s caption and description. It also allows you — providing the right graphics libraries are available on the server — to rotate the images.

This feature is supplemented by the possibility of attaching several documents to an article in one go, either:

  • by ftp, put all the documents in a subdirectory of ecrire/upload/ ;
  • by attaching a zip archive to the article. Spip will then offer the choice of extracting all the documents it contains and attaching them to the article.

Public area

Location of the template files

The default templates (formerly known as «article-dist.html») distributed with [SPIP 1.8] are not stored in the site’s root anymore, but are now in the dist/ sub-directory. This is part of a reorganisation of SPIP’s files to make it possible to place customised templates in the squelettes/ directory as an alternative to the root of the site (it is still possible to set the directory using the $dossier_squelettes variable).

A new template compiler

Less visible to the user, but just as important as all the above is [SPIP 1.8]’s new “template compiler”. After months of hard work, this compiler, which was previously introduced on the site SPIP Contrib’, has completely re-written the system that interprets the language of the loops, tags, filters and criteria.

The advantages of this new code may not be obvious at first sight. The main thing (apart from overcoming some programming constraints which had begun to be burdensome, and the overall improvement of the code’s quality) is that this code now makes it possible to create new <BOUCLES()>, new {criteria} and new #BALISES simply by adding functions to the mes_fonctions.php3 file — in a similar fashion to the |filters of the previous versions of SPIP.

A good example is the Portrait ou Paysage? (in French) published at SPIP Contrib’, which provides three new sorting criteria for images: {portrait}, {paysage} (landscape) and {carre} (square).

This new model should open SPIP’s development to a wealth of new contributions, which are indeed already blossoming. If you add new features to SPIP yourself, please let the SPIP community benefit from them!

It is worthwhile noting these new possibilities:

-  A loop can now be placed in the optional code before of another loop (i.e. between <B_articles> and <BOUCLE_articles(ARTICLES){criteria...}>)

-  Tags can be “nested”, for example: [ [(#SURTITRE)] (#LOGO_ARTICLE)]

-  Similarly, you can put <INCLURE()> commands in the optional parts of a tag:
[<INCLURE(start.php3)>(#SURTITRE) ]

-  You can access any field of a database table, in the templates, with the tag #NOM_DU_CHAMP, without any extra programming.

-  The syntax #_name:TEXTE allows you to access the tag #TEXTE of the outer loop named _name. This means you can access the values tags of outer loops whose names are ambiguous in the context of the current loop (typically, #TITRE and #_section:TITRE).

-  You can use a tag in criteria expressions, for example: {title = #TITRE}

-  By defining new loops, you can access tables located in external databases.

A debugger comes with the compiler:
-  it provides error messages to the webmaster if there are problems with the code of the template;
-  in addition, by replacing the code var_mode=recalcul by var_mode=debug in the refresh URL, the webmaster can access a mode displaying the precise PHP and MySQL code created by the compiler from the templates. It is a tool which seems complicated at first sight, but it is very valuable for those who wish to understand how the tags are working and especially so when one is creating one’s own tags and loops.


[SPIP 1.8] also benefits from the important contribution of a growing community of translators. It is now available in the following 33 languages, and documentation is also available in most of them (newcomers are in bold):

ar العربية arabe
bg български bulgare
ca català catalan
cpf Kréol réyoné créole réunionnais
cpf_hat Kreyòl ayisyen haïtien
da dansk danois
de Deutsch allemand
en English anglais
eo Esperanto esperanto
es Español espagnol
fa فارسى farsi
fon fongbè fongbé
fr français français
gl galego galicien
hu magyar hongrois
it italiano italien
ja 日本語 japonais
lb Lëtzebuergesch luxembourgeois
nl Nederlands néérlandais
pl polski polonais
pt Português portugais
pt_br Português do Brasil brésilien
ro română roumain
tr Türkçe turc [SPIP 1.8.1]
vi Tiếng Việt vietnamien
zh 中文 chinois

and as always the seven variations of occitan: òc auvernhat, òc gascon, òc lemosin, òc lengadocian, òc niçard (in two flavours), òc provençau, òc vivaroaupenc!

Translators (and apprentice-translators!) for any language on earth are very welcome! There is room for everybody. Please, do spread the word and do not hesitate to “conscript” your friends! The main translators’ page of the translations is still: www.spip.net/rubrique4.html; and the translators’ email list: spip-trad@rezo.net

Other improvements

New typographical shortcuts

Several new typographical shortcuts have appeared:

-  you can insert LaTEX code in an article (still in French) by means of the tag <math>. This code is processed by an external server and turned into an image which will be inserted in the text.

For example, the following text:

<math>the value of $x$ is $\sqrt{\frac{y^{2}}{z^{2}}}$</math>

displays as:

the value of $x$ is $\sqrt{\frac{y^{2}}{z^{2}}}$

-  the shortcut -- will be replaced by a em dash —.

New tags, criteria and filters

New filters, criteria and tags are described in the documentation, with the accompanying note “[SPIP 1.8]”.

Let us mention in passing, for those who desire a blog-like presentation, the filter |unique. This filter ensures that a recurrent element (a date, for instance) appears only once. IN is another new criterion: {id_article IN 1,2,3} returns the articles 1,2 and 3 in that order.


PHP 4.0.8, PHP 5. The minimum requirement for [SPIP 1.8] is now version 4.0.8 with the preg library installed. [SPIP 1.8] is also compatible with PHP 5. On the other hand, compatibility with PHP 3 has been dropped.

Note: For “historical” reasons, the filenames in the official distribution are still xxx.php3; this naming scheme will disappear in the next version of SPIP, to be replaced by xxx.php. However, a php version of [SPIP 1.8] is available for download.

MySQL 3, 4.1.x No compatibility problem has been detected with MySQL up to versions 4.1.x. However, if you encounter a problem with MySQL 4.1, please tell us about it on the dev list, spip-dev@rezo.net.

Graphical libraries. [SPIP 1.8] supports thumbnail generation with NetPBM which is easy to install via ftp (cf. http://gallery.menalto.com/modules....) if it is not already installed on your servers. It also supports GD1, GD2 and Imagick (as a php module, on as a line command known as “convert”).

«W3C» The shortcuts engine endeavours to comply with the W3C recommendations concerning HTML coding. However, this is not perfect in every situation, especially when users insert texts containing complex tags or HTML code.

Note: To perfect the results, [SPIP 1.8.1] introduces a “tidy” mode which can ensure that pages conform to XHTML 1.0. This mode is in operation on www.spip.net. For more details, see Tidy: validation XHTML 1.0 (in French).

Also in this version:

  • a new URL management module is integrated: it is the “clean URLs” mode that allows switching from the address http://mysite/article.php3?id_article=17 to something which looks like http://mysite/title_of_article1;
  • Forums are indexed in the search engine. This indexing is not applied on individual contributions but on discussion threads (all the replies starting from the root of the thread); the variable id_thread and the tags #ID_THREAD and #URL_FORUM are the new tools of this trade.
  • The loop (HIERARCHIE) has become more flexible: it is now possible to use {inverse}, {par hasard}, {n-2,1}, {par titre}, etc.
  • The cache system manages a used disk space quota on the server (the default is 5Mb);
  • The attachment of documents is now controlled with <div> tags and style sheets;
  • The shortcut {{ }} now translates into the HTML tag <strong>;
  • Syndication accepts flow in the Atom 0.3, RSS 0.91, RSS 1.0 and RSS 2.0 formats. Changes made to the syndicated site are picked up by SPIP when integrating the data flow, and the fields <modified> and <lastBuildDate> now modify the date of syndicated articles. As for the “javascript” syndication, it has been dropped (but who used it anyway?);
  • Language localisation files can be stored in the same directory as the templates;
  • The file ecrire/lang/perso.php3 has been dropped. The local_xx.php3 files, which can be stored in the templates directory, are used instead (xx is the language code). The string definitions in this file have priority over conflicting definitions in other localisation modules of the same language. The file local.php3, if it exists, is included lastly and opens the door to any conceivable hacks.
  • You can follow SPIP’s activity in the log files: ecrire/data/spip.log and ecrire/data/mysql.log
  • The online help is not bundled with SPIP, it works as a client/server model with automated download from the site spip.net.
  • Last but not least, the Diary in the private area has been completely rewritten.

* * *

[SPIP 1.8.1]

[SPIP 1.8.1], which was introduced on the 15th of April 2005, removes a few installation bugs that appeared after the launch of version 1.8. This new version adds also the following features:
-  a “tidy” mode (see above)
-  a new htaccess.txt file to manage customised URLs (see Utiliser des URLs personnalisées - still in French)
-  revision of the online help
-  an update of the LDAP module

Last detail, the tag #PARAMETRES_FORUM has been revised. There is no need to pass the back address in the forum parameters anymore, because SPIP now, redirect the visitor who has just poseted a message to the #URL_FORUM address of that message. If you do not want this redirection, you can recover the previous behaviour by passing the back address as a tag argument such as [(#PARAMETRES_FORUM{#SELF})]

Let us mention in passing that this new “page back” argument which can be passed to the tag, allows you to redirect to a page of your choice, for instance:
if you want to display a paticular text after the maessage has been posted (which is quite sensible if the forums are moderated beforehand).

Have fun!


As usual, you can download SPIP from www.spip.net/spip-dev/DISTRIB/. The upgrade is performed in the usual manner, see How to upgrade SPIP. Sites that are installed using spip_loader can be automatically upgraded.

Author George, mortimer, Paolo Published : Updated : 06/08/22

Translations : عربي, català, Deutsch, English, Español, français, italiano, Português, Türkçe