it-swarm.com.de

Erstellen eines Komponentenmenüpunktes über ein Plugin

Ich habe eine Weile die Joomla-Entwicklungsdokumentation durchgelesen, aber nicht so viel gelernt, wie ich möchte. Was ich versuche zu erreichen, scheint an der Oberfläche sehr einfach zu sein, aber das Navigieren im Joomla-Framework ist eine ziemliche Herausforderung.

Ich bin gespannt, wie schwierig es ist oder ob es überhaupt möglich ist, ein Plugin zu erstellen, das einer Komponente einen zusätzlichen Menüpunkt hinzufügt. Dieses Menüelement ist entweder nur ein Link, über den eine benutzerdefinierte Datenbankabfrage, die ich für diese Komponente erstellt habe, einfach in CSV exportiert wird, oder es wird eine Ansicht angezeigt, in der möglicherweise eine Schaltfläche dafür vorhanden ist.

Kann ein Plugin in dieser Funktion verwendet werden? Kann ein Plugin einer Komponente überhaupt Menüelemente hinzufügen? (Ich habe das Gefühl, ich habe das schon mal mit Plugins gesehen, die ich heruntergeladen habe).

Wenn ja, kann ein Plugin auf das "Modell" einer Komponente zugreifen und eine benutzerdefinierte SQL-Abfrage erstellen, um die bestimmte Kombination von Datenbankfeldern abzurufen, die ich aus den Datenbanktabellen dieser Komponente abrufen möchte?

Ist das, was ich versuche, auf andere Weise besser zu erreichen (Überschreiben von Komponenten möglicherweise)?

Tut mir leid, wenn ich wie ein Anfänger klinge. Meine bisherige Joomla-Entwicklung wurde durch die Verwendung von Cheats wie der Komponente "Jumi" behindert, mit der Sie PHP Code direkt in Ihre Joomla-Artikel einbetten können. Ich würde jedoch gerne lernen, wie das geht Gehen Sie mit dem Joomla Developer Framework richtig vor.

2
Brandon

Das Erstellen eines Admin-Menüelements kann über einen beliebigen Erweiterungstyp (Plugins, Komponenten, Module usw.) erfolgen, da Sie dies als Teil eines " Installationsskript " (den jeder Erweiterungstyp enthalten kann) tun können.

Das Wichtigste dabei ist, dass Sie das Menüelement erstellen, indem Sie bei der Erstinstallation der Erweiterung eine Zeile zur Datenbank #__menus hinzufügen. Das Menü wird nicht im laufenden Betrieb in das Menü "eingespeist". Wenn Sie die Erweiterung deinstallieren, möchten Sie sicherstellen, dass das Löschen dieser Zeile aus #__menus Teil des Löschvorgangs ist (auch über das Installationsskript). Andernfalls bleibt der Menüpunkt auch dann erhalten, wenn die Erweiterung nicht mehr vorhanden ist.

Das Installationsskript zeigt Ihnen also Ihren Menüpunkt an. Die nächste Entscheidung ist, wie die Anforderung (die Datenbankabfrage + der Export) behandelt werden soll, wenn auf den Link im Menü geklickt wird. Die Antwort darauf bestimmt, ob Sie ein Plugin oder eine Komponente verwenden möchten.

Wenn Sie versuchen, es als Plugin-Erweiterung zu verwenden, müssen Sie es wahrscheinlich in die System-Plugin-Gruppe aufnehmen und nach dem Link suchen, den Sie verwendet haben, bevor Joomla das interne Routing durchführt. aka, Sie möchten nach GET-Anforderungsvariablen in einer onAfterInitialise () -Methode suchen.

Z.B:

wenn Sie sich entscheiden, die URL des Menülinks zu ändern, gehen Sie wie folgt vor:

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

Sie müssten Ihr System-Plugin nach diesen Anforderungsvariablen durchsuchen (z. B. nach when-Option == "someComponentName" und view == "doExport") und, wenn sie gefunden werden, Ihre Abfrage-/Exportaktion ausführen. Wenn Sie Ihre Header korrekt setzen, erhalten Sie nach dem Klicken auf den Link eine Dateidownloadanforderung für die CSV-Datei.

Für und Wider:

  • Pro: Ein kleines bisschen einfacher als das Herstellen einer Komponente.
  • Con: Der Link sollte nichts anderes tun, als eine Dateidownloadanforderung auszuführen oder auf eine vorhandene Seite umzuleiten. Das heißt, wenn Sie eine Seite mit mehr Optionen laden möchten, bevor Sie die Anforderung ausführen, ist dies nicht über ein Plugin möglich (es ist nur nicht möglich, wofür Plugins gemacht sind).
  • Con: Dieses Plugin wird für jedes Seitenlade-Frontend und Backend aufgerufen. Es ist ein geringer Overhead, aber es ist immer noch Overhead bei jedem Laden der Seite. Dies ist ein guter Grund, kein Plugin zu verwenden.

Die andere Option (und die, die ich empfehlen würde) ist, stattdessen eine Komponentenerweiterung zu verwenden. Sie benötigen nur die Seite "admin" (Ihre "Site" -Seite der Komponente kann nur eine leere index.html-Datei sein).

Für und Wider

  • Pro: Viel mehr Freiheit, um zu entwickeln, wie Sie wollen. Sie können eine Seite mit zusätzlichen Optionen erstellen, bevor Sie den Export ausführen, oder Sie lassen sie wie mit der Plugin-Option exportieren.
  • Con: Wenn Sie lediglich die CSV exportieren möchten, wenn Sie auf den Menü-Link klicken, ist diese Methode möglicherweise sehr umständlicher.

Ich würde die Komponentenroute gehen, wenn ich du wäre. Es entspricht eher dem Kern dessen, was Sie tun möchten.

1
Drew G