web-dev-qa-db-fra.com

Création d'un élément de menu de composant via un plugin

Cela fait quelque temps que je lis la documentation de développement de Joomla, mais je n’en ai pas retenu autant que je le voudrais. Ce que j'essaie d'accomplir semble très simple en surface, mais naviguer dans le framework Joomla est un véritable défi.

Je suis curieux de voir à quel point il serait difficile, voire même possible, de créer un plug-in permettant d'ajouter un élément de menu supplémentaire à un composant. Cet élément de menu serait soit simplement un lien qui exporterait simplement une requête de base de données personnalisée que j'ai créée pour ce composant au format CSV, soit afficherait une vue comportant éventuellement un bouton.

Un plugin peut-il être utilisé dans cette capacité? Plus précisément, un plugin peut-il même ajouter des éléments de menu à un composant? (J'ai l'impression d'avoir déjà vu cela se produire avec les plugins que j'ai téléchargés).

Si tel est le cas, un plug-in peut-il accéder au "modèle" d'un composant et créer une requête SQL personnalisée pour extraire la combinaison spécifique de champs de base de données que je cherche à extraire des tables de base de données de ce composant?

Est-ce que ce que j'essaie d'accomplir serait mieux accompli d'une autre manière (remplacement de composant peut-être)?

Désolé si je parais être un novice complet. Mon développement Joomla jusqu’à présent a été handicapé par des astuces telles que le composant appelé "Jumi", qui vous permet d’incorporer du code PHP directement dans vos articles Joomla. Cependant, j’aimerais vraiment apprendre à faire les choses de la bonne façon en utilisant le framework de développeur Joomla.

2
Brandon

La création d'un élément de menu admin peut être effectuée via n'importe quel type d'extension (plugins, composants, modules, etc.) car vous pouvez le faire dans le cadre d'un " script d'installation " (que tout type d'extension peut inclure).

L'essentiel à noter ici est que vous créez l'élément de menu en ajoutant une ligne à la base de données #__menus lors de la première installation de l'extension. Le menu n'est pas "injecté" dans le menu à la volée ou quelque chose comme ça. Si vous désinstallez l'extension, assurez-vous que la suppression de cette ligne de #__menus fait partie du processus de suppression (ce qui est également effectué via le script d'installation). Sinon, l'élément de menu resterait même si l'extension avait disparu.

Ainsi, le script d'installation vous permettra d'obtenir votre élément de menu. La décision suivante est de savoir comment vous voulez que la demande (la requête de la base de données + export) soit traitée lorsque vous cliquez sur le lien dans le menu. La réponse à cette question déterminera si vous souhaitez utiliser un plugin ou un composant.

Si vous essayez de le faire en tant qu'extension de plug-in, vous devrez probablement l'intégrer au groupe de plug-ins System et le renvoyer pour le lien que vous avez utilisé avant que Joomla effectue son routage interne. alias, vous voudriez rechercher les variables de requête GET dans une méthode onAfterInitialise () .

Par exemple:

si vous décidez de rendre l'URL du lien de menu soit:

"administrator/index.php? option = someComponentName & view = doExport"

Vous obtiendrez votre plug-in système sniff pour ces variables de demande (c'est-à-dire, sniff for pour l'option == "someComponentName" et view == "doExport") et, lorsqu'il sera trouvé, votre action de requête/exportation. Si vous définissez correctement vos en-têtes, vous obtiendrez une demande de téléchargement de fichier csv après avoir cliqué sur le lien.

Avantages/inconvénients:

  • Pro: Un peu plus facile que de créer un composant.
  • Con: Vous ne devriez pas avoir le lien faire quoi que ce soit à côté d'exécuter une demande de téléchargement de fichier ou de rediriger vers une page existante. Par exemple, si vous souhaitez charger une page avec plus d'options avant d'exécuter la demande, il ne serait pas approprié de le faire via un plugin (il est possible de le faire, mais pas pour quels plugins sont créés).
  • Con: Ce plugin sera appelé pour chaque chargement de page front end et back end. C'est peu de frais généraux mais cela reste toujours à chaque chargement de page. C'est une bonne raison de ne pas utiliser de plugin.

L'autre option (et celle que je recommanderais) consiste à utiliser une extension de composant à la place. Vous aurez seulement besoin du côté "admin" (votre côté "site" du composant peut simplement être un fichier index.html vide).

Avantages/inconvénients

  • Pro: Bien plus de liberté pour développer ce que vous voulez. Vous pouvez créer une page avec des options supplémentaires avant d'exporter ou simplement l'exporter comme avec l'option de plug-in.
  • Con: Si tout ce que vous voulez faire est d'exporter le CSV lorsque le lien de menu est cliqué alors cette méthode peut être très un peu plus impliqué.

J'irais la route des composants si j'étais vous. Cela correspond plus au cœur de ce que vous essayez de faire.

1
Drew G