CONSOLE API - Jiji, votre nouvelle amie Joomla! 4 Console
- Détails
- Écrit par : Mr Alexandre J-S William ELISÉ
- Catégorie : Blog
-
Également disponible :
- Affichages : 122

About 24mn to read
Système - Jiji
Jiji est
Lire la suite :
Système - Jiji
Jiji est un Plugin Système qui utilise les Services Web Joomla! 4 en ajoutant des actions personnalisées à l'application console du noyau de Joomla! 4 sans “hacks”. En utilisant le conteneur d'injections de dépendances et autres capacités avancées de Joomla! 4.
Modif: Après avoir cherché plus tard sur le net, j'ai découvert que Chris Davenport avait déjà fait quelque chose de similaire je crois pour Joomla 3 à l'époque. Joomla 4 n'existait pas encore.
Télécharger Plugin Jiji
POURQUOI ?
J'ai commencé à coder Jiji en décembre 2020 parce qu'à l'époque je voulais avoir un petit projet pour essayer la nouvelle application console de Joomla! 4 basée sur Symfony Console. Si vous connaissez déjà Symfony Console, vous n'aurez aucun problème à prendre en main Joomla 4 Console.
QUOI ?
Le nom de l'extension “Jiji” vient du prénom de "fille mignonne" basé sur une version raccourcie et simplifiée de notre bien aimé "Joomla!" qui est d'ailleurs une marque déposée de Open Source Matters.
COMMENT ?
Jiji est un Plugin Système qui "ajoute" et "enregistre" de nouvelles Commandes à l'application console de Joomla 4 située: JPATH_ROOT/cli/joomla.php
J'aurais pû créer mon propre script en mode console dans ce fichier JPATH_ROOT/cli/jiji.php, mais j'ai pensé que ce serait une meilleur idée d'utiliser l'existant et de garder les conventions et les standards de joomla. Dites moi si j'ai eu tord. Je suis curieux d'entendre vos avis sur ce sujet précis.
Télécharger Plugin Jiji
Le code de “Jiji” est dans une Bibliothèque(Library) placée dans le dossier src, dans le plugin. Ce code utilise un espace de nom tel que AE\Library\Jiji. Les espaces de noms sont disponibles depuis PHP 5.3
Le dossier des Comportements(Behavior) contient tous les Traits PHP utilisés par le Plugin. Les Traits sont disponibles depuis PHP 5.4. Les Traits en PHP, sont en gros, des comportements communs que l'on peut greffer à des classes PHP sans relations (ex: 2 classes Chien et Avion) tous les deux identifiables mais sans relations à priori. On pourrait donc créer un Trait appelé Identifiable que ces deux classes utiliserait.
En d'autres termes, si vous vous retrouver à faire beaucoup de copier/coller de fonctionnalités entre plusieurs classes, à priori c'est un bon candidat pour créer un ou plusieurs Traits à partir de ces fonctionnalités.
Le coeur de ce plugin c'est l'espace de nom AE\Library\Jiji\Console. Dans le dossier correspondant, vous y trouverez ma première "Commande" dans la Console Joomla, appelée HelloSuperJoomlerCommand.php qui affiche juste le texte “Hello Super Joomler”. Mais un dossier intéressant c'est celui qui contient toutes les "Commandes" liées aux Articles Joomla qui appelent les Web Services / Api Joomla 4 directement à partir de la Console Joomla.
- GET tous les articles Lister(Browse)
- GET un article par id Lire(Read)
- PATCH un article par id Modifier(Edit)
- POST un article par id Créer(Add)
- DELETE un article par id Supprimer(Delete)
Afin de pouvoir effectuer l'action DELETE(Supprimer) vous devez d'abord faire une action PATCH(Modifier) avec au minimum l'id de la catégorie, le titre et l'état à -2 de l'article que vous voulez DELETE (Supprimer).
Exemple de données JSON envoyée : ‘{“catid”:64, “title”:“My edited title”, “state”:-2}’
“Jiji” est capable d'utiliser un fichier JSON ou du JSON en mode texte dans vos requêtes HTTP contenant une charge utile.
INSTRUCTIONS:
1 - Le fichier zip de l'extension est dans le dossier build/ de ce dépot Github
2 - Installez le plugin Jiji plugin comme n'importe quelle extension Joomla! 4.
3 - Suivez ces instructions
JPATH_ROOT : le dossier racine de votre site Joomla 4. Changer ceci en mettant le chemin absolu du dossier racine
J4X_BASE_PATH : L'url de base de votre site Joomla! 4 (ex: https://example.com)
J4X_API_TOKEN : Votre Jeton API Joomla! 4
Vous pouvez l'utiliser en mode non-interactif en rajoutant -n
Executer la Commande simple Hello Super Joomler
php JPATH_ROOT/cli/joomla.php jiji:hello
Executer la Commande Lister Articles
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:browse
Executer la Commande Lire Article (ex: id=1)
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:read --id=1
Executer la Commande Créer Article
utilisant une chaîne de caractères JSON en tant que données
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:add --item-data='{"alias": "my-article","articletext": "My text","catid": 64,"language": "*","metadesc": "","metakey": "","title": "Here's an article"}'
ou plus simplement un fichier JSON en tant que données
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:add --item-data='path/to/add-article.json'
Executer la Commande Modifier Article (ex: id=1)
utilisant une chaîne de caractères JSON en tant que données
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:edit --id=1 --item-data='{"catid": 64,"title": "Here's an another article"}'
ou plus simplement un fichier JSON en tant que données
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:edit --id=1 --item-data='path/to/edit-article.json'
Executer la Commande Supprimer Article (ex: id=1)
Cela doit être fait en deux étapes car il y a cette nouvelle façon de faire
1 - Executer la Commande Modifier Article que vous souhaitez supprimer et changez son état à -2 Corbeille (Trash)
2 - Executer la Commande Supprimer Article sur l'article que vous souhaiter supprimer.
Step 1 for Deleting Article
utilisant une chaîne de caractères JSON en tant que données
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:edit --id=1 --item-data='{"catid": 64,"title": "Here's an another article", "state": -2}'
ou plus simplement un fichier JSON en tant que données
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:edit --id=1 --item-data='path/to/delete-step-1-article.json'
Step 2 Deleting Article
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:delete --id=1
CONTRIBUTEUR.TRICES
Contributors are welcomed to jump in and help improve this project. Any constructive feedback is welcomed.
- EXTENSION - Helloapi exemple composant Joomla! 4 webservices
- CONSOLE API - Jiji, votre nouvelle amie Joomla! 4 Console
- SUGGESTION - Joomla! pourrait devenir un CMS "headless" agnostique, peut-être dans Joomla 4.5?
- ASTUCE - Comment envoyer un courriel au format texte et html avec l'api JMail de Joomla! 3