Espace privé
L’espace privé intègre de manière plus importante la technique de mise à jour asynchrone (AJAX/AHAH) d’une partie de la page. Les formulaires de descriptions d’images et de documents deviennent très fluides, la rotation des images, l’ajout de mots-clés ou d’auteurs, les références aux traductions sont également plus rapides.
Un système de modèles
Les modèles sont des mini-squelettes qui peuvent s’intégrer facilement dans un squelette normal mais aussi — et surtout — dans le texte des articles (ou brèves, etc).
Ils sont une extension naturelle des raccourcis <img1|left>
, <doc1|center>
. Ceux-ci sont d’ailleurs désormais gérés par ces mini-squelettes ; vous pouvez définir les vôtres dans le sous-répertoire modeles/ de votre dossier de squelettes (ou d’un plugin).
Outre les raccourcis de document et d’image, les modèles proposés dans dist/modeles/ gèrent l’affichage des liens de pagination, de la balise #LESAUTEURS
et des liens de traduction.
Les modèles sont plus largement documentés dans l’article « Utiliser les modèles ».
Nouvelles balises
-
#SPIP_VERSION
affiche la version de SPIP. -
#INSERT_HEAD
: une balise a insérer dans la zone<head>...</head>
de vos squelettes pour permettre aux plugins d’ajouter automatiquement des css ou des javascript. -
#INCLURE
: une nouvelle balise pour des inclusions « statiques » et non plus dynamiques.Rappel : La syntaxe
<INCLURE{fond=..}>
provoque l’inclusion des pages à chaque visite d’un internaute, que celle-ci concerne une page déjà en cache ou non.
Avec la nouvelle balise[(#INCLURE{fond=...})]
, l’inclusion est réalisée lors du calcul du squelette, et son résultat est stocké dans le cache de la page appelante. Avec ce système, on ne peut plus gérer une durée de vie ($delais
ou#CACHE{}
) réduite pour un squelette inclus ; en revanche il devient possible d’appliquer des filtres sur le squelette inclus :[(#INCLURE{fond=lettre}|version_texte)]
.
NB : le résultat de l’inclusion étant stocké en cache, il ne faut donc pas que l’#INCLURE
contienne d’éléments dynamiques, en particulier pas de balise#FORMULAIRE_XYZ
. - La pagination passe en « modèle » (cf. ci-dessus), ce qui permet sa personnalisation au moyen de modèles personnalisés. Ainsi :
-
#PAGINATION{page}
donne des numéros de page (1, 2, 3, 4...) au lieu des numéros d’item (0, 10, 20, ...) ; - on peut aussi essayer
#PAGINATION{page_precedent_suivant}
et#PAGINATION{precedent_suivant}
.
-
- Introduction d’une balise
#SQUELETTE
donnant le chemin du squelette courant.
Filtres
Enrichissement de image_masque :
- le placement vertical et horizontal du masque peut se faire
désormais avec :
-
text-align=center
(ou left, ou right) -
vertical-align=middle
(ou top, ou bottom)
-
- Désormais on peut choisir le mode de mélange des deux images, à la façon d’un logiciel comme Gimp. Par défaut, si on ne précise rien, on a :
mode=masque
qui est le fonctionnement déjà connu.
Les nouveaux modes sont :-
mode=normal
: on place l’image par dessus l’autre ; -
mode=eclaircir
: on place uniquement les pixels plus clairs ; -
mode=obscurcir
: on place uniquement les pixels plus foncés ; -
mode=produit
: on « multiplie » les pixels d’origine par les pixels du masque. De fait : les points noirs rendent l’image noire, les points blancs la laissent inchangée ; -
mode=difference
: on remplit avec la différence entre les deux images.
-
Extension des filtres image au texte :
Tous les filtres d’images peuvent être appliqués sur un fichier d’image, un tag <img src='..' ../>
ou un texte complet (les filtres étant appliqués alors sur chaque image trouvée). Il devient donc possible de faire [(#TEXTE|image_sepia)]
D’autres filtres ont été introduits... liste à compléter.
Utilisateurs avancés
Dossier formulaires/ :
les formulaires personnalisés (pour la partie html) doivent maintenant être placés dans un sous-dossier formulaires/ de votre dossier de squelettes (ou de votre plugin). La partie php du formulaire peut, pour sa part, être personnalisée dans le dossier balise/ du dossier de squelettes (ou du plugin).
Calculer un fond depuis l’espace privé :
pour les développeurs de plugins, une fonction recuperer_fond
permet maintenant de calculer un squelette, y compris depuis un script de l’espace privé. C’est ce système qu’utilisent aussi bien la balise #INCLURE
que le système des modèles.
Variables dans le squelette
De nouvelles balises apparaissent, qui permettent de faire des calculs à l’intérieur des squelettes et d’affecter leur résultat à une « variable », laquelle peut ensuite être utilisée par ailleurs dans le même squelette : #SET{toto, valeur}
et #GET{toto}
.
Rechargement partiel de page (experimental) :
toute boucle peut définir un fragment de squelette rechargeable dynamiquement de facon asynchrone par le navigateur (ahah). Pour cela, il suffit d’utiliser le critère {fragment}
sur la boucle considérée. Le critère {pagination}
implique par défaut le critère {fragment}
. Tout le contenu de la boucle (parties avant, principale, après ou alternative) est inclus dans un div portant la class fragment, et un id unique : <div id="fragment_html_1c4f894574d730e016e980d91fa678ca_articles" class="fragment">
...
En appelant l’url avec le paramètre supplémentaire var_fragment
ayant pour valeur l’id d’une div fragment (ex : &var_fragment=fragment_html_1c4f894574d730e016e980d91fa678ca_articles), le serveur ne retournera que ce fragment du squelette. Ainsi il est facile de recharger seulement une partie du squelette avec du javascript (AJAX/AHAH).
Remarque :
Cette fonctionalité est encore expérimentale et évoluera probablement dans les futures versions. Nous vous encourageons tout de même à l’essayer et donner vos impressions ou proposer du code d’amélioration pour cette fonction.
Mode tidy :
Le mode XHTML Tidy (voir article 3070) n’est plus fourni en standard avec SPIP, et passe en plugin. Pour trois raisons :
- ce code repose sur l’appel à un binaire pas souvent disponible chez les hébergeurs — son mode php_tidy n’est toujours pas totalement fonctionnel ;
- le moteur de SPIP compose désormais en standard un code XHTML beaucoup plus satisfaisant, réduisant l’intérêt de ce système ;
- le débusqueur (ajouter
&var_mode=debug
dans l’URL de la page) offre un mode de validation signalant les balises invalides ainsi que les lignes du squelette qui les ont produites (ajouter$xhtml='spip_sax';
dansmes_options.php
pour en bénéficier).
Documentation du code :
Une documentation du code a été mise en place sur http://doc.spip.org
- chaque fonction y est réferencée de facon automatique, et l’hypertexte fonctionne dans les deux sens (du code vers sa doc et vice-versa) ;
- le site est mis à jour quotidiennement en fonction des modifications du code de la version de développement (SVN) de SPIP.
Correctifs
De nombreux bugs ont été corrigés (notamment sur la syndication, le cache des images typographiques, le menu de langues), pour plus de détails voir notre site de développement http://trac.rezo.net/trac/spip/report/6.
Compatibilité avec les hébergements free et club-internet.
* * *
Si vous faites une mise à jour de votre site depuis une version ancienne de SPIP, lisez aussi l’article sur SPIP 1.9.
A lire également :
— Effectuer une mise à jour
— article 3370
Comme d’habitude, en cas de difficulté vous trouverez de l’aide sur la liste spip@rezo.net ou sur les forums de SPIP