Guida per migrare il modulo image ad imagefield

Guida per migrare il modulo image ad imagefield

Il modulo Drupal image è il plugin storico per la gestione delle immagini e delle gallerie fotografiche per il CMS Drupal. Con il passare del tempo però, sono nate delle soluzioni alternative per gestire degli album di foto all'interno di un sito web. La soluzione che attualmente preferisco è l'uso combinato di CCK con i moduli imagefield, imagecache e l'immancabile views.

Capita spesso che però vecchi siti usino ancora il modulo drupal image, questa è una semplice guida per convertire i nodi di tipo "image" in nodi gestiti con CCK.

Aggiornare i moduli Drupal

La prima operazione è di aggiornare tutti i moduli Drupal installati, in particolar modo il modulo image. La procedura è facile: basta sostituire le cartelle dei moduli con le versioni aggiornate e successivamente eseguire lo script update.php per eventuali aggiornamenti del database.

Installare i moduli Drupal necessari alla gallery

I moduli necessari per la conversione della struttura base sono:

  • CCK
  • imagefield

Mentre gli altri moduli consigliati per la visualizzazione della gallery sono:

  • views
  • imagecache
  • imageapi

Effettuare il backup del database di Drupal

La terza fase è il backup del database Drupal. Raccomando vivamente di non tralasciare questo passaggio. La procedura non sempre funziona al primo tentativo, a volte sono necessari degli aggiustamenti per la propria specifica configurazione oppure si potrebbe sbagliare un passaggio durante il procediemento. Solitamente uso il modulo backup_migrate che permette di salvare velocemente il database man mano che si procede con le varie operazioni.

Creare il tipo di contenuto per le immagini

A questo punto possiamo creare un nuovo tipo di contenuto che, ad esempio, possiamo chiamarlo foto. Al tipo di contenuto foto dobbiamo aggiungere un solo campo di tipo "imagefield" che chiameremo field_image. La cartella (directory) di salvataggio delle immagini dovrà essere la stessa che è stata specificata nella configurazione del modulo image ed il campo deve poter accettare più valori.

Eseguire lo script di migrazione

Dopo aver configurato Drupal si deve eseguire lo script di migrazione che si può scaricare dal sito di Drupal. Questo script va salvato nella radice del sito. Inoltre lo script necessita di una semplice configurazione: è necessario specificare il nome del tipo di contenuto ed il nome del campo che si è creato nel passaggio precedente.

Eseguendo lo script verrà effettuata la migrazione.

Non sempre però lo script funziona correttamente. A volte è necessario ri-eseguire manualmente un paio di query SQL:

INSERT INTO content_type_foto (vid, nid)
  SELECT n.vid, n.nid FROM node n
  INNER JOIN image i ON n.nid = i.nid
  INNER JOIN files f ON i.fid = f.fid
  WHERE n.type = 'foto' AND i.image_size = '_original'

e

INSERT INTO content_field_image
  (vid, nid, delta, field_image_fid, field_image_list, field_imagefield_data)
  SELECT n.vid, n.nid, 0, f.fid, 1,
    CONCAT('a:1:{s:11:\"description\";s:', CHAR_LENGTH(n.title), ':\"', n.title, '\";}')
  FROM node n
  INNER JOIN image i ON n.nid = i.nid
  INNER JOIN files f ON i.fid = f.fid
  WHERE n.type = 'foto' AND i.image_size = '_original'

Possiamo verificare l'esito della migrazione aprendo i vecchi contenuti di tipo image che sono stati trasformati in foto.

Disinstallare il modulo Drupal image

Dopo aver effettuato la migrazione e verificato che tutto sia funzionato correttamente, possiamo disinstallare il modulo Drupal image.

Nel caso sia abilitato anche il modulo Image gallery, prima di disinstallarlo è consigliabile modificare il file image_gallery.install rimuovendo il codice relativo alla cancellazione del vocabolario assegnato alla galleria fotografica. Altrimenti verranno cancellati tutti i termini usati per taggare le immagini.

Il codice PHP da cancellare è:

if ($vid = variable_get('image_gallery_nav_vocabulary', FALSE)) {
  module_invoke('taxonomy', 'del_vocabulary', $vid);
}

Ultimi ritocchi

La migrazione ora è completata completamente. Manca solamente da configurare l'output della gallery configurando ad esempio delle viste che magari sfruttino imagecache per ridimensionare le immagini.

Fare sempre i backup

Il mio consiglio è di fare un backup del database prima di ogni passaggio in modo da non dover ricominciare dall'inizio in caso di errori.

Invia nuovo commento
Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
CAPTCHA
Questa domanda è per evitare lo spam
1 + 0 =
Risolvi questto semplice problema di matematica e scrivi il risultato. Ad esempio per 1+3, scrivi 4.