Multi-site avec Code Igniter
Note publiée le .
Avec quelques projets purs php qui pointent le bout de leurs nez, je me remets doucement à mon framework préféré : Code Igniter.
Il m'avait à l'époque était conseillé par Gilles Fabio (ex aka Play) et je l'ai moi-même conseillé à ma chérie, Kurt et Cyril. Je l'apprécie beaucoup mais il me faut le temps de m'y remettre. En attendant je me forme un peu à mélanger CI et du Javascript. Si si, je me force à m'essayer au Web 2.0... Pour faire des applis webs agréables à utiliser j'y suis bien obligé.
Drupal et Dotclear, mes deux moteurs de CMS/Blogs préférés utilisent tous deux JQuery je vais peut-être m'y intéresser. Pour le moment j'en utilise d'autres qui sont aussi connues mais un peu moins "à la mode". On verra ! De toute manière là n'est pas le sujet, ce post est là pour vous divulguer comment j'organise mon dossier Code Igniter.
Tout d'abord il faut vous apprendre/rappeler comment est organisé par défaut un dossier CI :
- index.php
- system
- application
- config
- controllers
- errors
- hooks
- libraries
- models
- views
- cache
- codeigniter
- database
- fonts
- helpers
- language
- libraries
- logs
- plugins
- scaffolding
- application
- user_guide
En gras les dossiers dans lequel on met tous les fichiers que l'on crée. Je pars du principe que l'on créera plus de fichiers MVC que de librairies ou de plug-ins. Sinon votre application serait bizarre.
En tout cas parcourir une telle profondeur pour éditer mes fichiers ne me va pas. De plus la manière suggérée par la documentation officielle de Code Igniter pour gérer le multi-site ne réponds pas à mon problème de profondeur. De plus, comme Thesa me le rappelle si gentiment, il ne faut pas mettre les fichiers persos avec les fichiers systèmes susceptibles d'être mis-à-jour et donc potentiellement supprimable.
Je décide donc de séparer les dossiers systèmes du dossier application
où sont mes fichiers. Mon arborescence devient donc :
- application1
- index.php
- config
- [...]
- views
- application2
- index.php
- config
- [...]
- views
- application3
- ci_default_application
- index.php
- config
- [...]
- views
- ci_system
- ci_user_guide
Le dossier application
qui était dans system
est monté d'un cran et se nomme maintenant ci_default_application
. Le fichier index.php
qui était à la racine est déplacé dans ce même dossier. Ensuite chaque dossier applicationX n'est qu'une recopie du ci_default_application
. Il suffit ensuite de changer les paramètres dans les fichiers du dossier config pour spécifier la création de la nouvelle application.
Pour que CI comprenne qu'on lui a tout chamboulé son organisation, il faut adapter les fichiers index.php :
$system_folder = "../ci_system"; [...] $application_folder = ".";
Et le tour est joué. Dorénavant, pour chaque mise-à-jour de Code Igniter, il suffira de modifier le contenu du dossier system
.