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 :
- [(#REM) inserer_base_rubriques ]<h4>Rubriques</h4>
- <b>IDRUBRIQUE</b>, IDRUBRIQUEHAUT, LIBELLE , VISIBILITE, POSITION , MONLIEN <br />
- [(#REM) boucle complétée pour examiner les valeurs de visibilité ]
- <BOUCLE_rubriques(rubrique){par visibilite}{fusion visibilite}{par idrubriquehaut}{par idrubrique}>
- <b>#IDRUBRIQUE</b>, #IDRUBRIQUEHAUT, #LIBELLE , #VISIBILITE, #POSITION , #MONLIEN <br />
- [(#VAL{rubrique}|inserer_objet{#ID_RUBRIQUE})]
- </BOUCLE_rubriques>
- #COMPTEUR
- </B_rubriques><hr />
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...

... 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

Article publié le 5 juillet 2017, et actualisé en juillet 2017 .
Répondre à cet article