Tél: +41 22 / 388-33-14, [email protected] - icp.ge.ch/sem/cms-spip

56
François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 4-5 Théodore-de-Bèze, 1205 CH-Genève François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 4-5 Théodore-de-Bèze, 1205 CH-Genève Tél: +41 22 / 388-33-14, [email protected] - Tél: +41 22 / 388-33-14, [email protected] -http://icp.ge.ch/sem/cms-spip/ Cours « Squelettes SPIP » - Jeudi 15 et vendredi 16 mai 2008, 8h00-18h00 Cours « Squelettes SPIP » - Jeudi 15 et vendredi 16 mai 2008, 8h00-18h00 L’organisation et le rôle des répertoires et des fichiers de SPIP Cours Squelettes SPIP SPIP 1.9.2.d

description

Cours « Squelettes SPIP » - Jeudi 15 et vendredi 16 mai 2008, 8h00-18h00. François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 4-5 Théodore-de-Bèze, 1205 CH-Genève. Tél: +41 22 / 388-33-14, [email protected] - http://icp.ge.ch/sem/cms-spip/. - PowerPoint PPT Presentation

Transcript of Tél: +41 22 / 388-33-14, [email protected] - icp.ge.ch/sem/cms-spip

Page 1: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 4-5 Théodore-de-Bèze, 1205 CH-GenèveFrançois Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 4-5 Théodore-de-Bèze, 1205 CH-Genève

Tél: +41 22 / 388-33-14, [email protected] -Tél: +41 22 / 388-33-14, [email protected] -http://icp.ge.ch/sem/cms-spip/

Cours « Squelettes SPIP » - Jeudi 15 et vendredi 16 mai 2008, 8h00-18h00Cours « Squelettes SPIP » - Jeudi 15 et vendredi 16 mai 2008, 8h00-18h00

L’organisation et le rôle des répertoires et des fichiers de SPIP

Cours Squelettes SPIP

SPIP 1.9.2.d

Page 2: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Sources webographiques1. Où placer les fichiers de squelettes ?

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

2. Principe général http://www.spip.net/fr_article3437.html

3. Structure générale de spip http://toggg.com/spip/spip.php?article23

4. Installer SPIP http://www.spip.net/fr_article402.html

5. Comment réinstaller SPIP si je n’arrive plus à accéder à l’espace privé ? http://www.spip.net/fr_article1470.html]

6. Étendre SPIP http://www.spip.net/fr_article3497.html

7. Contribuer au développement de SPIP http://www.spip.net/fr_article825.html

8. Les fichiers de connexion de SPIP http://www.ouvaton.coop/spip.php?article117

Page 3: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

SPIP 1.9.2.d

François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 4-5 Théodore-de-Bèze, 1205 CH-GenèveFrançois Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 4-5 Théodore-de-Bèze, 1205 CH-Genève

Tél: +41 22 / 388-33-14, [email protected] -Tél: +41 22 / 388-33-14, [email protected] -http://icp.ge.ch/sem/cms-spip/

Cours « Squelettes SPIP » - Jeudi 15 et vendredi 16 mai 2008, 8h00-18h00Cours « Squelettes SPIP » - Jeudi 15 et vendredi 16 mai 2008, 8h00-18h00

Squelettes SPIP

Moteur SPIP

Résumé

Page 4: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Cf. : Structure générale de spiphttp://toggg.com/spip/spip.php?article23

Racine du site

La racine a été complètement vidée et ne contient pratiquement plus que index.php qui redirige sur spip.php, c’est maintenant l’unique point d’entrée de la partie publique du site.

inc-public.php3 est un fichier fantôme pour assurer la compatibilité ascendante, il redirige sur spip.php.

.htaccess optionnel pour l’url rewriting essentiellement.

win_png.htc et rien.gif pour assurer la transparence png avec MSIE

L’organisation des répertoires de SPIP et le rôle de ses fichiers

Index.php et spip.php

Page 5: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Les fichiers de connexion de SPIP (1/3)http://www.ouvaton.coop/spip.php?article117

Les fichiers de connexion de SPIP à la base de donnée portent des noms différents selon les versions utilisées, et sont également placés à différents endroits dans la structure de SPIP.

Le dossier /config/ créé à l’installation contient le script de connection à la base de données, connect.php et le script fixant le mode des fichiers créés par le serveur, chmod.php.

C’est aussi ici qu’on place les options universelles du site, mes_options.php

L’organisation des répertoires de SPIP et le rôle de ses fichiers

/config/connect.php

Page 6: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Les fichiers de connexion de SPIP (2/3)http://www.ouvaton.coop/spip.php?article117

Version 1.8.3• Nom de fichier : inc_connect.php3• Emplacement : ecrire/inc_connect.php3

Version 1.9.1Passage de php3 à php

• Nom de fichier : inc_connect.php• Emplacement : ecrire/inc_connect.php

Version 1.9.2Changement de nom et déplacement

• Nom de fichier : connect.php• Emplacement : config/connect.php

L’organisation des répertoires de SPIP et le rôle de ses fichiers

/config/connect.php

Page 7: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Les fichiers de connexion de SPIP (3/3)http://www.ouvaton.coop/spip.php?article117

Que faire ?

Une fois que vous avez trouvé le fichier, modifiez la ligne spip_connect_db de manière à ce qu’elle ressemble à ceci :

L’organisation des répertoires de SPIP et le rôle de ses fichiers

/config/connect.php

spip_connect_db(’mysql1-vip’,’’,’utilisateur’,’motdepasse’,’nomdelabase’)

Page 8: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Lors de l’installation de SPIPhttp://www.spip.net/fr_article402.html

En cas de grosse erreur (du genre : vous avez oublié votre propre accès au site — fréquent au début...), pour «relancer» cette procédure d’installation, il faut utiliser votre logiciel FTP et effacer les fichiers suivants :

• /config/connect.php (ou /ecrire/inc-connect.php ou php3 • dans d’anciennes versions)• .htacces, s’il existe (ou /ecrire/.htaccess dans d’anciennes versions)

La connexion suivante dans le dossier « ecrire » relancera alors la procédure de configuration (en réalité, c’est l’absence de fichier « connect.php » qui provoque le lancement de cette procédure).

L’organisation des répertoires de SPIP et le rôle de ses fichiers

/config/connect.php et .htacces

Page 9: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Comment réinstaller SPIP si je n’arrive plus à accéder à l’espace privé ?http://www.spip.net/fr_article1470.htmlAvec un client FTP (ou par tout autre moyen d’accès à votre espace d’hébergement), allez dans le dossier config/ récupérez sur votre poste le fichier connect.php puis effacez-le ou changez son nom. S’il existe, effacez aussi le fichier .htaccess. Puis suivez la procédure de configuration standard en visitant l’adresse http://monsite.org/ecrire/ : « Installer SPIP ». Pour la connexion à la base de données, utilisez au besoin l’identifiant et le mot de passe contenus dans l’ancien fichier connect.php.

Historique : Jusqu’à SPIP 1.9.1, le fichier à effacer s’appelait inc-connect.php3 (ou inc-connect.php) et se trouvait dans le dossier ecrire/.

Important : cette procédure de réinstallation ne détruit pas la base de données (articles, rubriques, etc.). Elle sert simplement à recréer un accès administrateur au site, et à générer des fichiers d’authentification corrects.

L’organisation des répertoires de SPIP et le rôle de ses fichiers

/config/connect.php et .htacces

Page 10: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

La racine d’une distribution de SPIP comporte essentiellement :

• Un répertoire ecrire comportant exclusivement des fichiers interprétables côté serveur (PHP et MySQL) : le moteur de SPIP

Selon la manière dont SPIP est installé, d’autres répertoires peuvent figurer à la racine mais sont vides à l’installation : ils contiendront les données, temporaires ou permanentes, nécessaires à la vie du site.

• Un fichier spip.php, alias index.php, gérant la compatibilité avec les anciennes versions, chargeant le fichier d’initialisation ecrire/inc_version.php et passant immédiatement la main au script principal ecrire/public.php ;

• Un répertoire dist comportant exclusivement des fichiers interprétables côté client (HTML, Javascript, feuilles de style, images de différents formats) ainsi que les patrons de mise en page nommés squelettes. Ces squelettes sont interprétés des deux côtés : il s’agit de fichiers composés d’un format MIME complété de quelques directives SPIP, directives traitées côté serveur afin d’envoyer au client un texte purement MIME (la plupart du temps du HTML, mais aussi du RSS, du SVG, du ICS etc).

Page 11: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

• Un répertoire ecrire comportant exclusivement des fichiers interprétables côté serveur (PHP et MySQL) : le moteur de SPIP

• Un fichier spip.php, alias index.php, gérant la compatibilité avec les anciennes versions, chargeant le fichier d’initialisation ecrire/inc_version.php et passant immédiatement la main au script principal ecrire/public.php ;

• Un répertoire dist comportant exclusivement des fichiers interprétables côté client (HTML, Javascript, feuilles de style, images de différents formats) ainsi que les patrons de mise en page nommés squelettes. Ces squelettes sont interprétés des deux côtés : il s’agit de fichiers composés d’un format MIME complété de quelques directives SPIP, directives traitées côté serveur afin d’envoyer au client un texte purement MIME (la plupart du temps du HTML, mais aussi du RSS, du SVG, du ICS etc).

SPIP 1.9.2.d

Page 12: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

Depuis SPIP 1.8, les squelettes de la distribution — c’est-à-dire ceux fournis en standard à l’installation de SPIP — sont regroupés dans le répertoire dist/. Ces fichiers contiennent les informations sur la mise en page par défaut du site et ne doivent pas être modifiés. Vous pouvez examiner le contenu de ce répertoire et partir de ce jeu de squelettes pour adapter la mise enpage à vos besoins.Toutefois, il ne faut surtout pas modifier les fichiers du répertoire dist/, sinon vous risqueriez de perdre toutes vos modifications à chaque mise à jour de SPIP !Pour éviter cela, faites une copie des fichiers que vous souhaitez modifier, et placez-les dans un autre répertoire, comme indiqué ci-après.

Où placer les fichiers de squelettes ?http://www.spip.net/fr_article3347.html

Page 13: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

dist de SPIP192d

Rôles des répertoires de dist et de ses fichiers

Page 14: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Rôles des répertoires de dist et de ses fichiers

Page 15: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Rôles des répertoires de dist et de ses fichiers

Page 16: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

dist de SPIP192d

Rôles des répertoires de dist et de ses fichiers

habillage.cssspip_style_visible.cssspip_style_print.cssstyle_prive_defaut.cssspip_admin.cssagenda.cssspip_style_invisible.cssspip_style.cssimpression.css

Page 17: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

dist de SPIP192d

Rôles des répertoires de dist et de ses fichiers

404.htmlagenda.htmlagenda_jour.htmlagenda_mois.htmlagenda_periode.htmlagenda_semaine.htmlarticle.htmlauteur.htmlbackend.htmlbackend-breves.htmlbreve.htmldistrib.htmlforum.html

ical.htmljquery.js.htmllogin.htmlmot.htmlnouveautes.htmlplan.htmlrecherche.htmlrubrique.htmlsite.htmlsommaire.htmlsommaire_texte.htmlstyle_prive.html

Page 18: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

dist de SPIP192d

Rôles des répertoires de dist et de ses fichiers

inc-entete.htmlinc-forum.htmlinc-head.htmlinc-petition.htmlinc-pied.htmlinc-rss-item.htmlinc-rubriques.html

Page 19: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

dist de SPIP192d

Rôles des répertoires de dist et de ses fichiers

spip.pngfeed.pngpuce_rtl.gifpuce.giffavicon.ico

Page 20: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

Depuis SPIP 1.8, les squelettes personnalisés doivent être rangés dans un répertoire nommé squelettes/ (attention au « s » final !), que vous créerez à la racine de votre site SPIP. Que vous souhaitiez installer un jeu complet de squelettes (pris sur SPIP - Contrib ou ailleurs), ou apporter une légère modification aux squelettes par défaut, placez vos squelettes dans cerépertoire.Ainsi, un utilisateur qui veut créer sa propre mise en page, développera ses propres fichiers article.html, rubrique.html, etc. dans le répertoire squelettes/. Notez bien qu’il n’est pas indispensable de placer un jeu de squelettes complet dans ce répertoire.

Pour afficher les pages du site, SPIP cherche les squelettes prioritairement dans le dossier squelettes/ ; si SPIP n’y trouve pas un fichier .html qui lui est nécessaire, il ira cherchercelui de la distribution dans le dossier dist/.Ainsi, si vous n’avez placé qu’un seul fichier dans le dossier squelettes, par exemple article.html, SPIP utilisera ce squelette pour afficher les articles, et ceux de la dist pourtoutes les autres pages du site.

Où placer les fichiers de squelettes ? http://www.spip.net/fr_article3347.html

Page 21: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

Le dossier squelettes/ est destiné à recevoir tous les fichiers nécessaires à la mise en page d’un site. On y rangera donc :• Les squelettes, c’est-à-dire les fichiers .html avec du code SPIP.• Les fichiers inclus dans les squelettes (ainsi que, pour les versions antérieures à SPIP 1.9, leur fichier php3 correspondant) et les modèles (depuis SPIP 1.9).• Les formulaires modifiés, de préférence dans un sous-répertoire formulaires/• Les feuilles de style CSS qui produisent l’habillage graphique ; les personnaliser permet en effet de varier, parfois spectaculairement, l’habillage d’un site sans intervenir dans les squelettes. Voir : « Mettez-y votre style ! ».• Les images utilisées dans les squelettes.• Le fichier mes_fonctions.php contenant les filtres et variables de personnalisation propres à ce jeu de squelettes.• Les fichiers javascripts.• Les fichiers de langue personnalisés (cf. : « Internationaliser les squelettes », méthode des fichiers de langues), de préférence dans un sous-répertoire lang/.• Etc...

Où placer les fichiers de squelettes ?http://www.spip.net/fr_article3347.html

Page 22: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

Utiliser un autre dossier de squelettesDepuis SPIP 1.5 il est possible de ranger les squelettes dans un répertoire portant le nom de votrechoix, en le déclarant dans le fichier ecrire/mes_options.php, avec la variable depersonnalisation $dossier_squelettes, comme expliqué dans la documentation correspondante. SPIP ira chercher les squelettes en priorité dans le répertoire ainsi déclaré.Ceci vous permet, par exemple, d’essayer un nouveau jeu de squelettes sans écraser l’ancien, ou de gérer dynamiquement plusieurs jeux de squelettes.

Où placer les fichiers de squelettes ?http://www.spip.net/fr_article3347.html

Page 23: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

Utiliser et/ou créer des squelettes en pluginsDepuis SPIP 1.9 il est possible de de créer des squelettes en plugins. Ils sont donc placés dans des répertoires à leur nom (SARKA, Multi-saisons, ...), eux mêmes placés dans le répertoire plugins.

Où placer les fichiers de squelettes ?http://www.spip.net/fr_article3347.html

Page 24: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

Utiliser le plugin switcher de squelettes• Le Switcher de squelettes

http://www.spip-contrib.net/Le-Switcher-de-squelettes• Installer le Switcher de squelettes

http://zine.spip.org/spip.php?article8

Ce plugin ajoute un formulaire à liste déroulante en javascript sur tous les squelettes de la partie publique du site, permettant de basculer entre les squelettes dist, ceux d’un dossier squelettes, et… et l’ensemble des squelettes contenus dans le répertoire nommé squelettes-test où chaque jeu de squelettes doit être dans un sous-répertoire.

Où placer les fichiers de squelettes ?http://www.spip.net/fr_article3347.html

Page 25: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

Utiliser le plugin switcher de squelettes...Pour personnaliser le style par défaut du formulaire, allez dans le fichier switcher_fonctions.php.

• Pour personnaliser le nom du repertoire de squelettes alternatif, allez dans inc/switcher_config.php et indiquez le nom du répertoire dans :

$repertoire_squelettes_alternatifs ='ce_que_vous_voulez';

• De même, on peut spécifier que seuls les administrateurs du site auront accès au basculement de squelette en mettant à true la variable suivante, toujours dans inc/switcher_config.php :

$afficherSeulementPourLesAdmins=TRUE;

Où placer les fichiers de squelettes ?http://www.spip.net/fr_article3347.html

Page 26: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

ACCESSIBILITE

Dossier oo : Pour permettre l'accès aux squelettes en version texte de votre site.

Ce dossier contient essentiellement un index qui renvoie dans le système standard.

Ce type de squelettes est particulièrement recommandési vous souhaitez faciliter l'accès de votre site aux personnes malvoyantes. Par convention, cette page est accessible par l'adresse oo (deux fois la lettre « o » minuscule), par exemple :http://www.monsite.be/oo

Où placer les fichiers de squelettes ?http://www.spip.net/fr_article3347.html

Page 27: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

Priorité des dossiers de squelettesSoyons plus exhaustifs et résumons. Grosso modo, lorsque SPIP doit utiliser un fichier, il le cherche dans différents répertoires dans l’ordre suivant :1. en premier lieu dans liste de dossiers désignés dans variable $dossier_squelettes, si celle-ci est définie ;2. ensuite dans le dossier squelettes/ situé à a racine du site ;3. puis (depuis SPIP 1.9) dans la liste de dossiers de la variable $plugins ;4. ensuite à la racine du site ;5. dans le répertoire dist/ ;6. et enfin dans le répertoire ecrire/.

« Grosso modo », car à cela s’ajoutent quelques subtilités, dont un ordre de priorité par fichier de squelette, qui permet des variantes plus fines : par rubrique, par branche ou par langue, comme expliqué dans la documentation correspondante.

Où placer les fichiers de squelettes ?http://www.spip.net/fr_article3347.html

1

2

3

4

5

6

Page 28: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

L’organisation des répertoires de SPIP et le rôle de ses fichiers

81 Type de documents que l’on peut téléchargerhttp://icp.ge.ch/sem/cms-spip/spip.php?article399

Le répertoire IMG contient les images et documents publiéspar les auteurs, ce dossier doit faire l'objet d'une sauvegarde régulière en même temps que celle de la base de données.

La table « types_documents » est écrite dans le fichier /ecrire/base/typedoc.php. Elle donne la liste des 81 types documents que l’on peut télécharger dans SPIP, à savoir : jpg, png, gif, bmp, tif, aiff, asf, avi, flv, mid, mng, mka, mkv, mov, mp3, mp4, mpg, ogg, qt, ra, ram, rm, svg, swf, wav, wmv, abw, ai, bz2, bin, blend, c, css, csv, deb, doc, djvu, dvi, eps, gz, h, html, kml, kmz, pas, pdf, pgn, ppt, ps, psd, rpm, rtf, sdd, sdw, sit, sxc, sxi, sxw, tex, tgz, torrent, ttf, txt, xcf, xls, xml, zip, odt, ods, odp, odg, odc, odf, odb, odi, odm, ott, ots, otp, otg, ...

Où sont placés les documents (à afficher, à télécharger ?

Page 29: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Pour chaque type de page, un squelette

Principe général de fonctionnement de SPIPhttp://www.spip.net/fr_article3437.html#nh1

http://exemple.org/spip.php?article3437

Lorsqu’un visiteur demande la page :

SPIP se base donc sur l’adresse URL de la page pour déterminer le squelette à utiliser :

SPIP va chercher un squelette nommé « article.html ».

Page 30: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Lorsque SPIP appelle un squelette, il lui passe un

contexteAinsi, l’URL fournit d’autres éléments que le nom du squelette. Par exemple,

dans /spip.php?article3437, le numéro de l’article demandé (3437) ;

dans /spip.php?page=recherche&recherche=ecureuil, le mot recherché (ecureuil).

Il s’agit d’un « contexte », c’est-à-dire,

une ou plusieurs « variables d’environnement », que SPIP va fournir au squelette pour qu’elles puissent être utilisées dans la composition de la page.

En effet, le squelette article.html a besoin de connaître le numéro de l’article demandé pour rechercher son titre, son texte,... dans la base de données.

De même, le squelette recherche.html doit connaître les mots recherchés par le visiteur pour trouver les enregistrements de la base de données qui contiennent ces termes.

Page 31: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

/spip.php?page=recherche&recherche=ecureuil

Dans toute URL, les variables d’environnement apparaissent après le « ? ».

Lorsqu’il y en a plusieurs, elles sont séparées par des « & ».

on a donc 1. deux variables : page et recherche, 2. auxquelles on attribue les valeurs respectives « recherche » et « écureuil ».

Variables

Valeurs

(si si, vous pouvez essayer !). On a donc ici aussi deux variables : page a la valeur "article" et id_article a la valeur "3437". Ces variables permettent à SPIP d’utiliser les données de l’article 3437 dans le squelette article.html.

/spip.php?article3437Dans le cas de :

SPIP a simplifié l’URL qui correspond en fait à :

/spip.php?page=article&id_article=3437

Seules les Valeurs sont écrites, les Variables sont implicites

Dans l’URL

Page 32: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

ou les résultats de recherche

L’URL /spip.php?page=abcd appelle le squelette abcd.html

L’URL /spip.php appelle le squelette sommaire.html

Avec deux cas particuliers :Il s’agit de la page d’accueil du site.

1. Créer des squelettes qui ne sont pas prévus par le système et

2. Les nommer comme vous le souhaitez.

En d’autres termes, vous pouvez:

/spip.php?page=plan

/spip.php?page=recherche&recherche=ecureuil

Cette syntaxe sert également pour les pages telles que le plan du site par exemple :

Page 33: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Une interface différente dans le même siteDes squelettes différents pour des rubriques particulières et leurs contenu (sous-rubriques, articles, brèves, etc.)En plus de la mise en page par défaut des différents contenus du site (rubrique.html, article.html, etc.), vous pouvez créer des squelettes différents pour des rubriques particulières du site et leurs contenus. Il suffit de créer de nouveaux fichiers .html et de les nommer selon le principe suivant :

- Une interface différente pour une rubrique et ses contenus (sous-rubriques, articles, brèves, etc.) : il faut compléter le nom du fichier squelette correspondant par « -numéro » (un tiret suivi d’un numéro de rubrique).

Par exemple, si vous créez un fichier rubrique-60.html, il s’appliquera à la rubrique n°60 et à ses sous-rubriques en lieu et place de rubrique.html. Le squelette article-60.html s’appliquera aux articles de la rubrique n°60. Si cette rubrique contient des sous-rubriques, leurs articles adopteront également le nouveau squelette. Idem pour breve-60.html... et ainsi de suite.

Le fichier rubrique-60.html s’appliquera à la rubrique n°60 et à ses sous-rubriques

en lieu et place de rubrique.html

Page 34: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le fichier rubrique-60.html s’appliquera à la rubrique n°60 et à ses sous-rubriques

en lieu et place de rubrique.html

Le fichier article-60.html s’appliquera à tous les articles de la rubrique n°60 et à leurs sous-rubriques en lieu et place de article.html

Le fichier breve-60.html s’appliquera à toutes les brèves de la rubrique n°60 et à leurs sous-rubriques en lieu et place de breve.html

Des squelettes différents pour des rubriques particulièreset leurs contenu (sous-rubriques, articles, brèves, etc.)Compléter le nom du fichier squelette correspondant par « -numéro »

Page 35: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

- Une interface pour une seule rubrique. (SPIP 1.3) On peut créer une interface qui s’applique à une rubrique, mais pas à ses sous-rubriques. Pour cela, il faut compléter le nom du fichier squelette correspondant par « =numéro ».

Par exemple, il faut créer un fichier rubrique=60.html, qui s’appliquera uniquement à la rubrique n°60, mais pas à ses sous-rubriques. Idem pour article=60.html, breve=60.html, etc. Ces squelettes s’appliquent aux contenus de la rubrique n°60 mais ceux de ses sous-rubriques retrouvent l’habillage par défaut.

Notez bien : le numéro indiqué est celui d’une rubrique. Les squelettes article-60.html ou article=60.html ne concernent donc pas l’article n°60 mais bien tous les articles de la rubrique n°60.

Des squelettes pour une seule rubrique

Le fichier rubrique=60.html s’appliquera uniquement à la rubrique n°60

en lieu et place de rubrique.html

Page 36: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le fichier rubrique=60.html s’appliquera uniquement à la rubrique n°60

en lieu et place de rubrique.html

Le fichier article=60.html s’appliquera à tous les articles de la rubrique n°60

en lieu et place de article.html

Le fichier breve=60.html s’appliquera à toutes les brèves de la rubrique n°60

en lieu et place de breve.html

Compléter le nom du fichier squelette correspondant par « =numéro »

Des squelettes pour une seule rubrique

Page 37: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le principe de fonctionnement du cache, de manière simplifiée

Par défaut, une page est considérée comme trop vieille au bout de 3600 secondes

Une fois que vous aurez compris le langage SPIP, vous pourrez modifier ce délai en vous servant de la balise #CACHE.

Page 38: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le dossier où sont placés les fichiers créés par le moteur SPIP pour le cache selon l'algorithme précédemment décrit et selon un délai fixé par l’instruction #CACHE{86400} placée dans chaque fichier html du squelette (ici 86400 s = 24 h x 3600 s/h).

Le principe de fonctionnement du cache, de manière simplifiée

On peut aussi écrire l’instruction (une balise SPIP) :#CACHE{24 * 3600} ou#CACHE{3 * 24 * 3600} ou

Page 39: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Dans le dossier tmp/ sont stockés tous les fichiers temporaires comme les caches de squelettes, les sessions, les logs etc.

Il contient aussi le sous-répertoire dump/ où sont effectuées les sauvegardes de données.

Le dossier tmp/ peut être vidé à tout moment.

Le principe de fonctionnement du cache, de manière simplifiée

Page 40: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Rôles du répertoire ecrire et de ses sous-répertoiresLe répertoire ecrire comporte plusieurs sous-répertoires composés de fichiers PHP définissant des fonctions et procédant éventuellement, mais rarement, à une initialisation lors de leur chargement (ces exceptions sont appelées à disparaître).

Page 41: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Rôles du répertoire ecrire et de ses sous-répertoiresCe dossier contient maintenant l’ensemble des fichiers interprétables côté serveur (PHP et MySQL) et ce, aussi bien pour le coté "public" (sous-dossier public/) que pour le coté "privé".(Cf.: Structure générale de spip http://toggg.com/spip/spip.php?article23)

Le nom de ce dossier est historique, c’était auparavant là où on trouvait le code permettant de modifier le contenu du site. Paradoxalement, c’est un dossier maintenant immuable, on "écrira" plus jamais dedans. Dans une installation normale, il ne contient que les scripts livrés par la distribution, il est quasi impératif de ne pas y faire de modification.

Son script index.php est le point d’entrée de ecrire/, la partie privée du site.

Page 42: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le fichier ecrire/inc_version.php initialise les constantes et les variables globalesnécessaires au fonctionnement de SPIP, notamment celles assurant sa portabilité sur les différentes plates-formes. Assez tôt lors de son chargement, il inclut le fichier inc/utils.php, où figurent les fonctions indispensables à SPIP, un fichier hors distribution nommé mes_options.php permettant de moduler cette initialisation sans avoir à modifier le fichier inc_version.php.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 43: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le fichier ecrire/public.php, appelé par spip.php, a pour rôle essentiel de délivrer lespages de l’espace public, commandées lorsque la requête HTTP comporte (après réécriture éventuelle) le paramètre page. Ce script applique alors le squelette ayant pour nom la valeur de ce paramètre. Il envoie les en-têtes HTTP et le contenu obtenus, gère leurs éventuelles erreurs et lance les tâches de fond à l’aide de la fonction cron.

Contribuer à l’espace public de SPIP consiste donc simplement à fournir de nouveaux squelettes, avec éventuellement leurs feuilles de style et leurs images.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 44: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le fichier index.php est le fichier central d’accès aux formulaires de l’espace privé. Ilauthentifie l’internaute, initialise ses données personnelles et applique la fonctioncharger_fonction à la valeur v du paramètre exec.

Cette application a pour effet decharger le fichier homonyme du répertoire exec, dont la fonction principale exec_v_dist est alors invoquée. Celle-ci a la charge de délivrer l’intégralité du flux de sortie, y compris les en-têtes HTTP. Il est donc possible d’étendre Spip simplement en rajoutant un fichier PHP dans un sous répertoire nommé exec d’un répertoire figurant dans SPIP_PATH.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 45: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire exec contient exclusivement les fichiers définissant les fonctions directement invocables par le paramètre d’URL exec. Le code PHP de ces fichiers ne doit jamais accéder en écriture à la base de données (les exceptions à cette règle sont en voie de disparition). A l’inverse, il y accède abondamment en lecture afin de vérifier les droits du demandeur et déterminer les données à visualiser.

Si l’on veut voir SPIP sous l’archétype Modèle-Vue-Controleur, les fichiers de exec remplissent le rôle de Controleur. Si l’on veut voir SPIP sous l’archétype (Print(Eval(Read))) de Lisp, c’est la partie Read. A terme, ce répertoire devrait devenir un répertoire de squelettes. Il est demandé aux nouvelles contributions de Spip de penser à cet objectif lors de leur rédactions.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 46: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire action, dont il a déjà été question, contient essentiellement les scripts accédant en écriture à la base de données.

Si l’on veut voir SPIP sous l’archétype Modèle-Vue-Controleur, les fichiers de action remplissent le rôle de Modèle. Si l’on veut voir SPIP sous l’archétype (Print (Eval(Read))) de Lisp, c’est la partie Eval. Là encore, contribuer à SPIP consiste à écrire de tels scripts et à les invoquer par des formulaires construits avec la fonction generer_action_auteur assurant la sécurisation de l’accès à ces scripts,...

Rôles du répertoire ecrire et de ses sous-répertoires

Page 47: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire inc, le plus volumineux, contient essentiellement les fonctions construisant les pages de l’espace privé renvoyées au client, ces fonctions devant être à terme les filtres utilisés par les fichiers de exec quand ils seront des squelettes. Si l’on veut voir SPIP sous l’archétype Modèle-Vue-Controleur, les fichiers de inc remplissent le rôle de Vue.

Si l’on veut voir SPIP sous l’archétype (Print(Eval(Read))) de Lisp, c’est la partie Print. Toutefois ce répertoire contientégalement beaucoup de fonctions relevant plutot du Controle et devra donc être réorganisé. La plupart des fichiers de inc sont chargés par l’intermédiaire de charger_fonction, et ce sera le cas de tous à terme. Aucune des fonctions de ce répertoire n’est censée utiliser echo. Les contributions à SPIP sont appelées à respecter ces règles dès à présent.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 48: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire install contient exclusivement les fonctions nécessaires à l’installation de SPIP. Chaque étape peut-être surchargée ou complétée par d’autres, la fonction principale de exec/install.php utilisant ce répertoire selon le même principe que ecrire/index.php avec le répertoire exec.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 49: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire urls contient des fichiers définissant chacun le même jeu de fonctions de réécriture d’URL. Il s’agit des fonctions calculant, à partir d’un index numérique dans une table de la base de données, un signet plus facile à lire et écrire que l’appel du script PHP effectivement opéré par le serveur HTTP pour cet index et cette table. Là encore, il suffit de rajouter un fichier dans ce répertoire pour obtenir un nouveau jeu, dont le nom sera affecté à la globale type_urls.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 50: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire lang contient exclusivement des fichiers de données, tableaux indiquant la traduction, pour toutes les langues connues de SPIP, de tous les arguments que la fonction _T, définie dans inc/utils.php, est susceptible de recevoir. Les fichiers sont chargés exclusivement par les fonctions de inc/lang.php. Traduire les fichiers de référence *fr* en donnant un nom conventionnel aux fichiers obtenus suffit à déclarer une nouvelle langue à SPIP.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 51: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire charset contient lui aussi exclusivement des fichiers de données, tableaux permettant de passer d’un codage de caractères à un autre (utf, iso, ascii, entités html etc). Ils sont lus exclusivement par les fonctions de inc/charsets.php. Il suffit là encore de rajouter un fichier pour disposer d’un nouveau codage, mais SPIP propose tous ceux couramment utilisés, aussi un telle intervention est rarissime.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 52: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire base contient les fonctions d’interfaces entre PHP et la base MySQL installée. Les contributions possibles sont essentiellement le portage vers d’autres serveurs de base de données.

SPIP n’a pas été prévu pour cela au départ, aussi l’interface pour de telles contributions est encore lacunaire. On regardera néanmoins, malgré son incomplétude, le fichier générique abstract_sql.php, et son application à MySQL dans db_mysql.php si l’on veut tenter l’aventure (des portages partiels ont été réalisés ainsi). Ne doit évidemment figurer aucun code MIME dans ce répertoire.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 53: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire balise contient les fichiers PHP associés aux balises dynamiques de SPIP. Leur nom est homonyme du squelette de dist/formulaires. Compléter l’espace public de SPIP par un formulaire F consiste à créer un fichier F.html dans son SPIP_PATH et un fichier F.php dans un sous-répertoire balise de son SPIP_PATH. Le rôle de ce fichier PHP est de réceptionner les saisies demandées par ce formulaire, et éventuellement de ré-afficher celui-ci pour complément en cas de saisies invalides.

C’est sans doute le type de contribution à l’espace public la plus difficile à réaliser, car la mécanique sous-jacente exige deux passes d’exécution dePHP dont il faut bien comprendre les rôles respectifs. Avant que ce mécanisme n’existe, la stratégie de développement de formulaire consistait à écrire des squelettes comportant des instructions PHP. Il est toujours possible de le faire, mais le résultat sera peu efficace car jamais mis en cache ; et il ne dispense pas de comprendre les deux passes de PHP intrinsèques au phénomène.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 54: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire public contient le compilateur des squelettes. C’est une partie du code assez compliquée, mais depuis SPIP 1.8 elle bénéficie d’une interface de programmation qui rend ce compilateur totalement extensible sans exiger d’en comprendre tous les détails. La description la moins incomplète est ici.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 55: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Le répertoire safehtml est en fait une bibliothèque indépendante de SPIP, fournissant des utilitaires de sécurisation des pages scriptables. Pour contribuer à cette partie, remonter directement à son site.

Rôles du répertoire ecrire et de ses sous-répertoires

Page 56: Tél: +41 22 / 388-33-14, francois-daniel.giezendanner@edu.ge.ch - icp.ge.ch/sem/cms-spip

Dernier point : la plupart des fichiers de SPIP sont utilisés via charger_fonction qui charge un fichier et appelle sa fonction homonyme censée y être définie. Il s’ensuit que le nom d’un fichier PHP doit être composé exclusivement de caractères acceptables pour un nom de fonction PHP : on évitera donc le signe moins, le point etc.

Rôles du répertoire ecrire et de ses sous-répertoires