Joomla! - Importazione contenuti da Joomla 2.5.x a 3.x.x

google-plus Scritto da . Postato in Joomla!

Se avete già importato i vostri conteuti dal vostro vecchio sito Joomla! a una nuova installazione Joomla! 3.x.x questo articolo non sarà di vostro interesse. Se invece state cercando di trovare un metodo di trasferire mesi e mesi di articoli del vostro blog alla vostra nuova installazione Joomla!, quanto segue fa per voi!

Può interessarvi questa lettura:

Joomla! - Esportare e Importare dati componenti con phpMyAdmin

Mi è capitato, per un cliente che usa il componente Multisites, di dover importare i dati del sistema precedente al nuovo sistema basato su Joomla! 3.x.x

Il problema si fa annoso visto che dalla versione 3.2.x, la struttura delle tabelle del componente com_content cambia rispetto a Joomla! 2.5.x e questo impedisce di fare un dump della tabella e comodamente importare i dati con un semplice client MySQL o phpMyAdmin.

Per questo, ho creato un semplice script, che nella sua semplicità, non fa altro che importare i contenuti da un sito all'altro comprese le immagini annesse all'interno degli articoli.

Lo script è scaricabile direttamente da qui.

Per ogni categoria presente nella tabella prefix_categories lo script ne farà una copia nel nuovo database e una volta inserita, con il nuovo id della categoria appena inserita, in looping inserirà nella tabella content tutti gli articoli che gli appartengono, ricreando il sistema categorie-articoli del vecchio sito Joomla 2.5.

Lo script, serve unicamente per importare i dati da un 'vecchio' sito Joomla! 2.5 a uno 'nuovo' fatto con la più recente versione del CMS Joomla! 3.x. Entrambi devono risiedere sullo stesso server. Il motivo è semplice, lo script deve poter leggere il file configuration.php per poter prelevare i dati di accesso al database di origine (quelli del vecchio sito joomla 2.5).

Importare i contenuti

  1. Il pacchetto compresso una volta scaricato dalla sezione Joomla extensions download, va prima di tutto scompattato. Non per nulla il nome stesso del pacchetto lo ricorda (unzipfirst). All'interno, vi è anche il file readme.txt con le istruzioni necessarie a far funzionare il meccanismo di importazione.

Il file import-categories.php che trovate all'interno, NON è un'estensione di joomla e dunque NON va installato da Gestione estensioni. Lo script è nient'altro che un file php (import_categories.php) che contiene la logica di trasferimento dei record da un database all'altro.

  1. Il file così com'è va copiato nella root del nuovo sito joomla; Accanto al file configuration.php
  2. Una volta copiato nella directory dove risiede il nuovo sito (Joomla 3), va lanciato nella seguente maniera:
http://www.mionuovosito.com/import-categories.php?db=olddb&prefix=oldprefix&path=/var/www/myoldsitej25/httpdocs
  • path, è il percorso assoluto del sito sul server! NON va inserito con lo slash finale.
  • prefix è il prefisso che precede le tabelle del database Joomla 2.5.
  • db è il nome del database della versione precedente di Joomla.

Queste informazioni si possono comunque prelevare dal file configuration.php del vecchio sito in Joomla 2.5.

Alcuni suggerimenti e soluzioni

  1. Durante l'importazione, lo script, tenta di copiare le immagini presenti nel testo degli articoli. Ma poichè i permessi e la ownership delle cartelle spesso causano errori inaspettati o la mancata importazione, consiglio prima dell'uso di aprirlo e commentare la sola riga 139. Non è infatti indispensabile visto che le immagini degli articoli, si possono importare a mano semplicemente copiando la cartella images dal vecchio sito e incollarla in quello nuovo.
  2. Per motivi di sicurezza, effettuata l'importazione cancellatelo immediatamente!

Warning: mysql_fetch_array()

Ultimamente, sono stato contattato per il seguente errore:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/vhosts/sisdic.it/httpdocs/import-categories.php on line 183

A tal proposito, ricordo che il prefisso del database di Joomla 2.5 non deve essere passato con l'underscore davanti:

Per fare un esempio, se il prefisso fosse "jos_" il prefisso deve essere passato allo script semplicemente come "jos" pena l'errore e la mancata importazione dei conenuti nel nuovo database.

Note:

Essendo uno script gratuito, ricordo che la responsabilità nell'uso dello script è esclusivamente di chi lo usa.

Se avete domande, commentate l'articolo o inviatemi un messaggio.

 


Per essere più facile ed intuitivo, il blog fa uso dei cookie, piccole porzioni di dati che consentono di capire come gli utenti navighino e ne visualizzino le pagine. I cookie non registrano alcuna informazione personale sull'utente ed eventuali dati identificabili non verranno memorizzati. La nostra Privacy Policy è cambiata: Ti invitiamo a prenderne visione. Oppure visiona la nostra Cookie Policy: