Une migration sous SPIP - 2/ en privé

  comment migrer un site Php-MySQL en SPIP

Dans un précédent article, nous analysions le contenu des tables d’un site dynamique à convertir en SPIP.

Et nous en étions au point de vouloir insérer les Rubriques à reprendre dans la table SPIP, dans un ordre bien défini : voyons comment organiser les écrans introduits dans l’espace privé...

Article publié le 5 juillet 2017, et actualisé en juillet 2017

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 Pour créer des rubriques SPIP

Le morceau de squelette ci-dessous nous permet donc d’afficher l’ensemble des rubriques, dans un ordre logique de création, et nous avons meme vérifié en rajoutant des critères {fusion ...} qu’il n’y avait pas d’usage de codes spécifiques dans #VISIBILITE ou dans #MONLIEN :

  1. [(#REM) inserer_base_rubriques ]<h4>Rubriques</h4>
  2.   <b>IDRUBRIQUE</b>, IDRUBRIQUEHAUT, LIBELLE , VISIBILITE, POSITION  , MONLIEN <br />
  3. [(#REM) boucle complétée pour examiner les valeurs de visibilité ]
  4. <BOUCLE_rubriques(rubrique){par visibilite}{fusion visibilite}{par idrubriquehaut}{par idrubrique}>
  5. <b>#IDRUBRIQUE</b>, #IDRUBRIQUEHAUT, #LIBELLE , #VISIBILITE, #POSITION  , #MONLIEN <br />
  6. [(#VAL{rubrique}|inserer_objet{#ID_RUBRIQUE})]
  7. </BOUCLE_rubriques>
  8. #COMPTEUR
  9. </B_rubriques><hr />

Télécharger

il ne reste plus qu’à rajouter le code php de création, soit une fonction comme inserer_objet() (on va même utiliser la technique des filtres de SPIP ) qui assure :
- l’insertion d’un enregistrement rubrique en table SPIP
- l’affectation de sa valeur de clé id_rubrique au code idrubrique.....
- l’affectation des autres valeurs aux champs de l’occurrence de RUBRIQUES...
Ensuite on complètera le code pour gérer la recopie du libellé à la valeur de titre, voire l’insertion du numéro de position en tête du titre...

On essaye ... ? Avec notre lien de menu, on lance l’appel à cette page modifiée pour...
inserer filtre erreur
... obtenir une erreur, qui nous rappelle que inserer_objet() n’est pas connue dans l’espace public !

Alors avant de se lancer dans cette programmation, on va réfléchir un peu à l’utilisation de l’API de fonctions internes de SPIP.

 Passer en espace privé

Car la création de rubriques (et plus généralement d’objets éditoriaux) fait appel aux fonctions internes de SPIP, celles qui servent dans l’espace privé de SPIP ; dans l’espace public, les visiteurs peuvent seulement "voir" le contenu publié, et donc les fonctions de l’API ne sont pas utilisables...

Il est donc naturel de vouloir alors placer ces pages de création contrôlée dans l’espace privé : rappelons qu’il est loisible de Modifier l’interface privée (sans y toucher) : recopions les pages dans le dossier ./squelettes/prive/, et relançons :

inserer base menuprive

Pour être tout-à-fait correct, il faudrait modifier les appels aux pages nommées, c’est-à-dire remplacer #URL_PAGE par #URL_ECRIRE dans notre squelette de menu ; nous voyons bien les appels en ./.ecrire/?exec=.., mais

Exec non autorisé..... parce qu’inexistant !

En fait, l’appel de pages exec du privé, prévoit des fonds de page "exec", donc il faut mettre les fichiers de squelettes appelés dans ./squelettes/prive/exec/.

 Passer en plugin

Finalement, il est plus simple de passer directement à la création d’un plugin, de plus ce processus est complètement documenté.

Il faut juste choisir un préfixe [1] qui n’existe pas encore ; la création en est très facile avec la Fabrique...
Après avoir choisi un nom (inserer_base), on vous laissera donc le soin de :
- créer l’arborescence initiale du plugin, directement sous ./plugins/ (le chargement automatique viendra ensuite),
- créer les fichiers utilitaires (paquet.xml, et les fichiers de ./plugins/lang/),
- rajouter un bouton de lancement de l’ecran menu principal (dans le menu Maintenance )
- préparer les onglets dans ce menu, dans paquet.xml,
- intégrer les pages-écrans et squelettes déjà réalisés en onglets de ce menu...
- préparer un écran de configuration de l’importation


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1Rien a voir avec le des tables SPIP ; il s’agit du nom de dossier et de zip du plugin.


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 5 juillet 2017, et actualisé en juillet 2017 .

Répondre à cet article