Table des matières

Drupal

Cf une liste de modules.

Qq pages à garder en memo

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)

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

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

Avec CCK

Sans CCK

Flash

Divers