Noter d’abord que Joomla utilise la même notion de $prefix
que spip, mais il n’a pas de valeur de préfixe par défaut, un radical est généré aléatoirement : vous devrez donc commencer par modifier les noms des tables physiques, car SPIP ne sait pas (encore ?) appliquer un $prefix à des tables non-SPIP.
Dans la suite de cet article, vous devrez prévoir d’adapter ce préfixe, en avant du nom de table précédé par un _
: dans la version d’origine du plugin, il s’agit du préfixe jos
_
: PhpMyAdmin v4.x permettra de remplacer un préfixe dans tous les noms de tables d’une base, par une seule opération !
N.B. Dans tous les squelettes du plugin ci-dessous, l’ensemble des boucles est désormais protégé par un ?
à suivre le nom physique de la table, pour éviter une erreur de table inexistante, avec néanmoins un message d’anomalies...
Quelques équivalences (pour Joomla 2 ?)
Comme tout CMS, les auteurs, articles et rubriques sont enregistrées dans des tables de la base Joomla, à savoir :
- _users : id, #NAME, #USERNAME , #EMAIL , #PARAMS
- _content : id, asset_id, #TITLE , #INTROTEXT , #FULLTEXT , #CREATED , #CREATED_BY (= id_auteur)
#IMAGES #URLS #ATTRIBS #METAKEYS #METADESC #XREFERENCE (a reference to enable linkages to external datasets)
- _assets : id, parent_id, #NAME #TITLE , #RULES (droits /en JSON)
- _categories : id, asset_id, parent_id, #TITLE , #DESCRIPTION
Documentation du plugin
- Permet de lire et afficher une bdd joomla avec SPIP
- Gère la conversion Joomla -> SPIP via un squelette
UTILISATION
- installer un SPIP sur la même base de donnée que le joomla
- installer le plugin
- avant de l’utiliser, vous devrez corriger les prefixes du jeu de tables Joomla
- se rendre sur la page
./spip.php?page=joomla2spip
Le menu proposé offre un sommaire des articles, et la liste des catégories à droite,
la lecture de l’articles
REMARQUES
Joomla propose des champs inexistants dans la table article de spip, ils sont disponibles via des plugins SPIP on les ignore ici (dans cette première version joomla2spip v0.2.3 la conversion n’a pas été testée ! ).
- ordre
- date de dépublication
- id_parent (pour faire des articles liés)
Joomla propose des ’features’ non gérées par SPIP ; ignoré.
- menus => necessite un plugin...
les liens de _content
;
index.php?option=com_content&task=view&id=43&Itemid=81
sont transformés dans spip_articles en
spip.php?page=article&id_article=43
Les id_article doivent être forcés pour correspondre à id.
TODO
Chopper les urls des rubriques, des articles des documents.
jos_jv_page_url (url propres ?)
jos_jv_a_page ?
jos_redirection ?
Chopper les utilisateurs :
- les auteurs : jos
_users
- les contacts : jos
_contact_details
- les abonnés : jos
_acajoom_subscribers
Types d’utilisateurs : jos_usertypes
- *# administrator
- *# editor
- *# user
- *# author
- *# publisher
- *# manager
Pour lancer la conversion régler php.ini
:
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 18000 ; Maximum execution time of each script, in seconds
max_input_time = 18000 ; Maximum amount of time each script may spend parsing request data
memory_limit = 64M ; Maximum amount of memory a script may consume (8MB)
- > erational : la pagination permet de limiter la consommation
- > xdjuj 0.2.1 : récupère les forums pour SPIP 2 également
Version 0.2.3 et suivantes : sur un Joomla 3, les structures de tables ont changé !
- > YannX 0.2.3 : en trunk, une protection par boucle sur table optionnelle
(pour la disparition de ’jos_sections’ en Joomla 3)
Une autre technique : base annexe
Le menu de Maintenance technique de SPIP permettant de déclarer une autre base SPIP, va être utilisée pour assurer des boucles sur une declaration annexe pour Joomla :
- créer un fichier de connexion, à nommer joom
- les boucles de tables devront être précédées de ce radical de connexion :BOUCLE_content(joom:content){par id}
Des noisettes Z seront rendues disponibles dans le plugin....
[1] Joomla 3 se caractérise par la disparition de la table jos_sections
, désormais intégrée à la table jos_categories
!