L'anatomie de la recherche intelligente dans Joomla 5 Partie 2 : Création d'un plugin I.

DEV - 02/12
Dans l'article précédent, nous nous sommes familiarisés avec les capacités de la recherche intelligente Joomla...

Dans l'article précédent, nous nous sommes familiarisés avec les capacités du composant de recherche intelligente Joomla, avons parlé des paramètres et de la configuration de l'indexation planifiée à l'aide de CRON. Commençons par créer le code de notre propre plugin.

Liste des ressources

Avant de commencer la partie technique, je mentionnerai quelques articles qui abordent directement le sujet principal. Ainsi que des articles qui couvrent généralement la création et/ou la mise à jour d'un plugin pour l'architecture moderne de Joomla 4 / Joomla 5. Ensuite, je supposerai que le lecteur les a lus et a généralement une idée sur la façon de créer un plugin fonctionnel. pour Joomla :

  • Création d'un plugin Smart Search - documentation officielle de Joomla. C'est pour Joomla 3, mais la plupart des dispositions sont restées valables pour Joomla 4 / Joomla 5
  • Developing a Smart Search Plugin, un article du Joomla Community Magazine en 2012.
  • Le livre Joomla Extensions Development de Nicholas Dionysopoulos qui couvre le développement de Joomla! extensions sous Joomla versions 4 et 5.
  • La section Base de données sur le nouveau portail de documentation manual.joomla.org - pour Joomla 4 et Joomla 5. ## La partie technique. Développement du plugin de recherche intelligente Joomla 5 Le composant de recherche intelligente fonctionne avec des plugins de fournisseurs de données, dont la tâche principale reste la même : sélectionner les données et les transmettre au composant pour indexation. Mais au fil du temps, les tâches de réindexation sont également tombées sous la responsabilité du plugin. Dans l'article, nous supposerons que nous exécutons l'indexation du contenu manuellement à partir du panneau d'administration. Le travail de la CLI est visuellement différent, mais son essence reste la même.

Pour les développeurs expérimentés, je dirai que le plugin de recherche étend la\Joomla\Component\Finder\Administrateur\Indexeur\Adaptateurclasse, le fichier de classe se trouve dans Administrator/components/com_finder/src/Indexer/Adapter.php. Eh bien, alors ils le découvriront par eux-mêmes. En outre, à titre d'exemple, vous pouvez étudier les principaux plugins de recherche intelligente de Joomla - pour les articles, les catégories, les contacts, les balises, etc. - dans le dossier plugins/finder. J'ai travaillé sur un plugin de recherche intelligent pour les composants JoomShopping (composant e-commerce Joomla) et SW JProjects (votre propre composant de répertoire d'extensions Joomla avec serveur de mise à jour), de sorte que les noms de classe et certaines nuances leur seront associés. Je vais en montrer l'essentiel en utilisant l'exemple de JoomShopping. La solution à la question du multilinguisme s'appuie sur l'exemple de SW JProjects.

La structure des fichiers du plugin de recherche intelligente

La structure des fichiers du plugin de recherche intelligente pour Joomshopping ne diffère pas de celle typique :

Structure des fichiers du plugin de recherche intelligente Joomla 5

Services de fichiers/provider.php

Le fichier supplier.php vous permet d'enregistrer un plugin dans un conteneur Joomla DI et vous permet d'accéder aux méthodes du plugin de l'extérieur en utilisant MVCFactory.

?php /** * @package Joomla.Plugin * @subpackage Finder.Wtjoomshoppingfinder * * @copyright (C) 2023 Open Source Matters, Inc. * @license Licence publique générale GNU version 2 ou ultérieure ; voir LICENSE.txt */ \défini('_JEXEC') ou mourir ; utilisez Joomla\CMS\Extension\PluginInterface ; utilisez Joomla\CMS\Factory ; utilisez Joomla\CMS\Plugin\PluginHelper ; utilisez Joomla\Database\DatabaseInterface ; utilisez Joomla DI Container ; utilisez Joomla DI ServiceProviderInterface ; utilisez Joomla\Event\DispatcherInterface ; utilisez Joomla\Plugin\Finder\Wtjoomshoppingfinder\Extension\Wtjoomshoppingfinder ; return new class () implémente ServiceProviderInterfa...
[Courte citation de 8% de l'article original]
Loading...