Table des matières
Drupal
multisites
Pour une install multisites, cf http://drupal.org/node/43816
En résumé, utiliser l'arbo suivante :
# les modules pour tous les sites, penser à faire un update sur chaque site # (s'ils sont sur des db séparées) en cas d'upgrade d'un module. drupal_base/sites/all/modules drupal_base/sites/all/themes # idem pour les themes drupal_base/sites/site1.tld/settings.php drupal_base/sites/site1.tld/modules # modules pour ce site seulement drupal_base/sites/site2.tld/settings.php drupal_base/sites/site3.tld/settings.php # on peut aussi avoir différents sites sur le même host (www.example.com/site1 et www.example.com/site2) avec drupal_base/sites/example.com.site1/settings.php # dans ce cas, renseigner $base_url drupal_base/sites/example.com.site2/settings.php
Et configurer apache avec autant de vhosts que nécessaire, pointant tous sur drupal_base
Pour partager certaines tables, mais pas toutes, il faut utiliser la même db et jongler avec des suffixes différents, cf http://drupal.org/node/22267
On peut choisir un préfixe par défaut différent pour chacun des sites, en précisant un suffixe commun pour certaines tables (users par exemple), ou préciser un suffixe commun par défaut et un différent pour certaines tables seulement…
Pour avoir juste un thème différent, mettre la même base avec les mêmes préfixes et ajouter juste dans le settings.php
$conf = array( 'theme_default' => 'le_theme_voulu', );
À la fin du settings, on peut ajouter un include commun à tous, pour mettre par exemple
# offline pour tous $conf['site_offline'] = '1'; # online pour tous $conf['site_offline'] = '0';
mais on peut avoir la même chose en ajoutant dans chaque settings.php un
# offline # $conf['site_offline'] = '1';
que l'on active/désactive avec
# mettre offline sed -i -e '/$conf["site_offline"]/ s/.*/$conf["site_offline"] = "1";/' /path/2/drupal_base/sites/*/settings.php # mettre online (ou laisser l'admin gérer via son interface, site par site) sed -i -e '/$conf["site_offline"]/ s/.*/$conf["site_offline"] = "0";/' /path/2/drupal_base/sites/*/settings.php
drush
drush est un module (enfin, pas vraiment) bien utile pour la maintenance, surtout en multisite. Le télécharger et le mettre où vous voulez (hors arbo drupal), créer un alias
alias drush='php /path/to/drush.php'
Comme je n'ai pas de terminal sur fond noir, je change les couleurs dans includes/drush.inc (sinon le jaune sur fond blanc se lit assez mal) avec
// always on black background $red = "\033[31;40m\033[1m[%s]\033[0m"; $yellow = "\033[1;33;40m\033[1m[%s]\033[0m"; $green = "\033[0;33;40m\033[1m[%s]\033[0m";
Et ensuite par exemple pour mettre à jour tous les modules de tous les sites.
# si on a pas encore la liste des sites for f in /home/path/to/drupal_multisites_root/sites/*; do if [ -d $f ]; then s=$(basename $f); if [ $s != 'default' ] && [ $s != 'all' ]; then echo $s; fi; fi; done>vhosts.list # editer le fichier pour virer les liens symboliques si vous en avez, puis # depuis la racine de drupal while read s; do echo $s; drush -l http://$s update; done < vhosts.list # et pour vérifier while read s; do echo $s; drush -l http://$s status; done < vhosts.list
IMCE
Pour activer IMCE dans TinyMCE (ça parait con mais j'ai passé plusieurs fois pas mal de temps à trouver la case que j'avais oublié de cocher)
- activer tinymce, imce, imce_wysiwyg (et wysiwyg évidemment)
- dans les formats d'entrée, en créer un pour tinyMCE (ou en reprendre un existant), lui mettre les rôles ad hoc et tout cocher sauf “filtre HTML”
- dans les profils wysiwyg, affecter tinymce au format d'entrée précédent
- conf imce pour préciser des trucs (suffixes, tailles, dossiers) mais surtout pour affecter un profil tinymce à chaque rôle (il faut avoir activé le droit admin IMCE pour l'avoir dans le menu de configuration du site)
- dans les profils wysiwyg, cocher les boutons voulus, il faut au moins image et imce (qu'on oublie facilement si on l'ajoute en cours de route, surtout qu'il n'apparaît pas si on a pas les droits d'admin IMCE)
Bizarrerie
Voici une chose étrange… testez la fonction suivante dans le hook enable de n'importe quel module (testé avec php 5.2.6) :
function mytestmodule_enable() { // this line throws Fatal error: Call to undefined function drupal_set_message() in /home/www/vhosts/dev.edulibre.org/sites/all/modules/mytestmodule/mytestmodule.install on line 12 if (function_exists('drupal_set_message')) { drupal_set_message("fct mytestmodule_enable"); } // but this one don't (if previous commented) // drupal_set_message("fct mytestmodule_enable"); // and this one also throws the fatal error //if (TRUE) { drupal_set_message("fct mytestmodule_enable"); } }
Si vous voulez un module “vide” pour tester ça, vous pouvez utiliser mytestmodule.tgz
Latex
Une petite liste d'url à aller voir pour LaTeX dans Drupal, dès que j'aurai 5min
- http://drupal.org/project/jsmath (polices à aller chercher sur http://sourceforge.net/projects/jsmath/files/)
- http://drupal.org/node/159031 (Displaying mathematics with TeX)
- http://drupal.org/project/mathfilter (apparemment des pbs en D6)
- http://www.codecogs.com/components/equationeditor/equation_install.php (un éditeur d'équation LaTeX en js mais apparemment c'est difficile de séparer l'éditeur js de la génération des images)
event et calendar
Après avoir testé pas mal de bricoles, event est plutôt à abandonner au profit de date & calendar…
Cf http://drupal.org/node/326061#comment-1077193 pour un howto
Gallerie photo
Un paquet de modules permettent de gérer une gallerie photo, pas évident de s'y retrouver, en voici quelques uns avec qq remarques.
Javascript
- http://drupal.org/project/galleria, intègre la solution galleria d'affichage des images, peut fonctionner juste avec upload pour afficher les PJ d'un node comme galerie ou avec imagefield (champ cck), peut utiliser lightbox pour l'affichage (au clic sur la photo, à la place de l'affichage grand format). N'apporte rien pour la gestion des PJ ou des droits sur les galleries.
- http://drupal.org/project/brilliant_gallery à l'air pas mal mais plante chez moi (sur le galleries management, pas moyen de créer une galerie)
Avec CCK
Sans CCK
- http://drupal.org/project/photos créé un type album et permet de cocher chaque type de node existant comme “sub-album”, ce qui ajoute un onglet “images management”, pour ajouter les images (avec du flash multiupload si module activé et flash présent, formulaire classique sinon). A l'air pas mal mais pas j'ai réussi à afficher une photo, c'est ballot (pb de chmod, en 600 quand il faudrait 644, probablement pas très compatible avec mes réglages cgi et suphp, pas le temps de creuser)
- http://drupal.org/project/gallery_assist et ses modules satellites (pour upload, afficheur flash, etc.)
- http://drupal.org/project/lightbox2 (cf http://drupal.org/node/266126 pour une comparaison des différents “lightbox modules”), juste un afficheur, rien pour créer/gérer les galeries
- http://drupal.org/project/views_gallery (une gallerie est constituée des fichiers attachés à un node), slideshow lightbox si lightbox2 est activé.
Flash
- http://drupal.org/project/dfgallery avec http://drupal.org/project/photos (js ou flash au choix ?)
Divers
- http://drupal.org/project/node_gallery encore en alpha (2010-04)
- http://drupal.org/project/yoxview (D7 only)