Willkommen Gast. Bitte anmelden oder registrieren.

Autor Thema: Backenpart für Content-Plugin  (Gelesen 2836 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Backenpart für Content-Plugin
« am: 20. März 2012, 11:34:33 »
Hallo,

ich habe so ein wenig Startprobleme:
Ich möchte meinem Content-Plugin ein paar Verwaltungsfunktionen für's Backend verpassen, also mehr, als nur ein paar Schalter, die in der XML in 'config' mitgegeben werden können.
Nachdem die bekannten Tutorials nicht so recht weiter halfen, habe den EasyCreator zu Rate gezogen. Auch hier gibt es keine Vorlagen für oder Einstellungen, mit denen ich passendes erzeugen könnte. Das passt auch dazu, dass bei der Joomlainstallation im Administrator-Verzeichnis kein Unterverzeichnis 'plugins' vorhanden ist.

Geht das überhaupt?
Oder muss ich mein Plugin normal als simples Plugin lassen und für die Verwaltung eine eigene Komponente mit eigener Installation etc. erstellen? Vom Gefühl her finde ich es dann schon komisch, wenn die in der Verzeichnisstruktur des Plugins 'rum macht'.

J-Worker

  • Bestätigter Nutzer
  • Beiträge: 18
  • Hat keine Ahnung. Davon aber ganz viel...
    • Webentwicklung mit Joomla!
Antw: Backenpart für Content-Plugin
« Antwort #1 am: 20. März 2012, 12:20:25 »
Hi,

FAQs und Doku nicht gelesen!

Hier mal ein kleiner Tipp, dann verstehst du evtl. auch warum es in /administrator/ keine /plugins/ gibt:

$app = JFactory::getApplication();
if (!$app->isAdmin()) return;


Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Backenpart für Content-Plugin
« Antwort #2 am: 20. März 2012, 13:48:37 »
Auch auf die Gefahr hin, dass man mir jetzt wieder Ausreden und Lügen vorwirft:

Ich steige nach lange Pause wieder in die Joomla-Programmierung ein, ich muss mir mein Fundus an guten Links und Quellen also erst zulegen. Aus dem Grund bewege ich mich hauptsächlich auf den Joomla-Developer-Seiten.
Dabei kommt man an einer Menge Doku vorbei, als Einsteiger kann ich die Artikel aber oftmals keiner Joomla-Version oder einem Joomla-Part zuordnen. Teilweise arbeitet man mit einem Beispiel und stellt dann aber fest, dass ein Teil davon aber für 2.5 so gar nicht mehr benutzt werden sollte.
Ich habe doch auch Interesse daran, mein Plugin sauber und fehlerfrei zu erstellen und wenn ich trotz viel Lesen und Probieren absolut nicht weiter komme, dann frage ich nach. Das ist nicht böswillig gemeint. Warum könnt Ihr Joomla-Profis einem Einsteiger nicht auch mal Fehler und Anlaufschwierigkeiten verzeihen?


Zu meinem Vorgehen, falls das verbesserungswürdig ist, dann bitte nur her mit der Info:
- Ich habe mein Plugin an sich gut zum Laufen bekommen, das habe ich auch nicht ohne FAQ / Doku hin bekommen - meine diversen Quellen und veralteten Fehltritte bekomme ich aber nicht mehr zu sammen.
- Hauptsächlich habe ich mich an der offiziellen Entwickler-Doku orientiert: http://developer.joomla.org/getting-started.html
- nach diversen Suchen (s.o.) und dem EasyCreator-Versuch  habe ich dann den Verdacht geschöpft, dass mein Wusch so gar nicht umsetzbar ist.
-> unter http://docs.joomla.org/Developers habe ich nur Template- und Security-FAQ gefunden.
-> Die verlinkten FAQ in den Forenregeln laufen übrigens ins Leere (gestern auch schon)

Zu Deinem Code (danke für die zweite Chance):
Eine erste Suche ergibt viele russische Treffer. Ich finde die Schnipsel in wenigen Beispielen (gekennzeichnet mit Joomla 1.5), die mir bezüglich der Aufgabenstellung auch nicht wirklich weiter helfen.
Ich vermute, dass damit Frontendaufrufe gefiltert werden sollen. Anscheinend wird auf Seiten der Codebasis also nicht zwischen FE und BE unterschieden.
Trotzdem wird mir damit zum einen nicht klar, ob ich damit eine GUI für Verwaltungsaufgaben ins BE bekommen kann oder nicht und wie ich die 'best practise' für meine Nutzung in FE und BE wäre.

Bitte
Ich finde die Methode zwar in der API-Doku, das hilft mir aber  bei meiner Aufgabe nicht.
Kannst Du mir bitte noch einen Link auf die Doku geben, wo ich mehr Infos finden kann? Ich habe ihn scheinbar noch nicht in meiner Sammlung.
« Letzte Änderung: 20. März 2012, 14:35:45 von Sammy »

sybrek

  • Bestätigter Nutzer
  • Beiträge: 25
Antw: Backenpart für Content-Plugin
« Antwort #3 am: 20. März 2012, 14:51:33 »
Der Code von J-Worker sollte doch slebsterklärend sein...

Aber ein kleiner Tipp: Plugins laufen global (je nachdem welche Hooks angesprochen werden), wenn das Plugin z.B. nur das Backend bedienen soll, aber nen Hook nutzt, welcher auch im Frontend zur Verfügung steht, musst du im Plugin nachfragen ob du dich gerade im Backend oder Frontend befindest. Nichts anderes macht der Code von J-Worker ...

Wie bei so manch anderer Frage gilt hier: Googeln, Dokus lesen und natürlich die Api.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Backenpart für Content-Plugin
« Antwort #4 am: 20. März 2012, 15:15:24 »
Ich bin gerade über meinen Titel gestolpert... Is ja wohl für'n Ar...  ;D

Danke für die Erklärung. Die hat geholfen, mir war das so nicht präsent, obwohl ich vor der Entwicklung des Plugins http://docs.joomla.org/Tutorial:Plugins mitsamt der meisten Subseiten gelesen habe. Halt bis der Speicher voll war und ich das Gelesene in einer ersten Implementierung festigen wollte.
Wenn dann jetzt nach 14 Tagen dabei nicht alles sofort habe umsetzen können und vielleicht auch mein Englisch mal versagt hat, dann kann man doch aber nicht behaupten, ich hätte nicht gelesen?!

Egal: Danke für Aufklärung.

Mich führt das aber zu der nächsten Verständisfrage: http://docs.joomla.org/Tutorial:Plugins bezieht sich ja leider auf die 1.5, weshalb ich nicht weiß, ob die API noch ganz korrekt ist. Welches Event wird denn geworfen, wenn im Backend die Plugin-Einstellungen aufgerufen werden sollen? An welcher Methode klinke ich mich ein und kann ich dann überhaupt die normalen MVC-Mechanismen von Joomla nutzen?

Beitrag zusammengefügt: 21. März 2012, 13:12:05
Ich habe - was ich normal nicht mache - die Frage an anderer Stelle noch einmal platziert, das möchte ich dazu sagen.
Da der Thread aber hier nun einmal schon steht, möchte ich nur einmal vorsichtig nachfragen, ob ihr wirklich richtig gelesen hattet.

Zitat
...
Ich möchte meinem Content-Plugin ein paar Verwaltungsfunktionen für's Backend verpassen, also mehr, als nur ein paar Schalter, die in der XML in 'config' mitgegeben werden können.
...
Geht das überhaupt?
Oder muss ich mein Plugin normal als simples Plugin lassen und für die Verwaltung eine eigene Komponente mit eigener Installation etc. erstellen?
...

Sind die Antworten auf diese Fragen wirklich aus einem FAQ, dass einem auf jedem Fall hätte über den Weg laufen müssen, herauslesbar?
Bei so etwas komplexen wie der Programmierung von Erweiterungen (MVC, Events, Best-practices etc) finde ich einen solchen Verweis sowieso eher gewagt. Selbst wenn man die Idee einer Lösung hat, kann einem ein erfahrener Entwickler ja vielleicht noch weiter helfen.
Ich möchte eine sauber Lösung schaffen, weshalb ich gefragt habe.
« Letzte Änderung: 21. März 2012, 13:12:05 von Sammy »

sybrek

  • Bestätigter Nutzer
  • Beiträge: 25
Antw: Backenpart für Content-Plugin
« Antwort #5 am: 21. März 2012, 23:25:53 »
Plugins sollen nichts verwalten .. dafür sind Komponenten da. Wenn es aber mal sein muss, dann hast du immer noch die Möglichkeit eigene (auch komplexere) FormFields zu schreiben, die du dann in der config des Plugins nutzen kannst.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Backenpart für Content-Plugin
« Antwort #6 am: 22. März 2012, 00:01:29 »
OK. Dann lag ich ja gar nicht so falsch. Danke für die deutliche Aussage.

Ich verstehe nur nicht, warum man das dann nicht gleich in der ersten Antwort sagen kann:
Ich habe direkt danach gefragt:
Zitat
Geht das überhaupt?
Oder muss ich mein Plugin normal als simples Plugin lassen und für die Verwaltung eine eigene Komponente mit eigener Installation etc. erstellen? Vom Gefühl her finde ich es dann schon komisch, wenn die in der Verzeichnisstruktur des Plugins 'rum macht'.

Warum nicht einfach:
'Plugins haben kein Backend, mach's wie Du sagtes: Plugin für die Funktion und Komponente für die Services im Backend'.

bembelimen

  • moderatives Dielektrikum
  • Beiträge: 227
  • Ich kam, sah und zensierte...
    • Joomla! Vereinsverwaltung
Antw: Backenpart für Content-Plugin
« Antwort #7 am: 22. März 2012, 13:36:42 »
Auch wenn ich jetzt ein bisschen ins Off-Topic abschweife, aber ein Kommentar zum Code von Devil und deiner Antwort. Ich (persönlich) glaube, dass es falsch ist, bei einem Problem als erstes die Doku zu konsultieren. Der erste Schritt sollte das Nachschlagen des Codes im Joomla! Framework sein. Sprich in diesem Fall JFactory => getApplication => JApplication => isAdmin. Wenn die Stelle gefunden wurde, dann sollte versucht werden, zu verstehen, was da gerade passiert und in wie weit "mir" das nützlich sein kann. Wenn das geschehen ist, dann ist der zweite Schritt (falls noch Fragen offen sind) die Doku zu nutzen um evtl. Beispiele etc. anzuschauen. Später kann, wenn das Problem wieder einmal auftaucht, sofort die Doku genutzt werden, da man den Code ja mal verstanden hat und nur eine Gedächtnisauffrischung benötigt, aber man sollte mindestens einmal das ganze im Code selbst nachgeschaut und nachvollzogen haben.

Sehr praktisch ist in diesem Zusammenhang auch eine IDE, die mehrere Projekte gleichzeitig verwalten kann. Dort kann man sich dann ein "Framework"-Projekt einrichten, was nur die "library" enthält und was dann mit den Entwicklungsprojekten als Bibliothek verknüpft wird.
Joomla! ist auch nur ein Mensch...

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Backenpart für Content-Plugin
« Antwort #8 am: 22. März 2012, 16:28:10 »
Ich darf dann auch weiter offtopic  :):
Ich habe zwar keine Ahnung, wer Devil ist, aber grundsätzlich stimme ich Dir da durchaus zu:
Ich arbeite in Eclipse und habe PHP-Storm noch als Testversion geladen. Ich habe zunächst die Doku gelesen (beim Lesen ist das immer alles logisch) und dann mich selbst versucht und bei Problemen andere Erweiterungen oder Joomla konsultiert.
Deshalb ärgern mich auch diese 'Du-hast-nicht-blabla' Antworten so, gerade, wenn ich das Gefühl habe, dass die Leute gar nicht genau gelesen haben, was ich gefragt habe (und ich habe hier ja wirklich um Stellungname zu der letztlichen Lösung gebeten).
back-to-1st-level-offtopic: Das Vorgehen bringt aber auch das Problem mit sich, dass man x Möglichkeiten entdeckt. Einen Teil davon kann man als 'old-style' ausmachen, bei anderen sieht man nur, dass Joomla selbst unterschiedliche Wege geht (Beispiel wie besorge ich mir die HTTP-Parameter, das macht jeder anders). Dann kommt vielleicht dazu, dass Joomla anders arbeitet, als man es selbst erwarten würde (warum auch immer), bei mir war das beim MVC mit seinen Namenskonventionen und wer dort was macht und auch, was Joomla nicht übernimmt. Das ist sicher historisch gewachsen, aber als Einstieg nicht unbedingt einfach. Das konkret mag auch an meiner täglichen Arbeit hängen, weil ein Kollege genau das selbe macht und wir auch beide das 'M' etwas anders definieren würden ('M' != 'Persistenz').
Auch deshalb frage ich gern mal nach, wie denn so die best-practice ist und aus der selben Neugierde hake ich auch gern nach, wenn mir etwas oder eine Antwort unklar ist. Wo das dann enden kann steht hier: http://forum.joomla-nafu.de/index.php/topic,73.msg329.html und das ist schade für alle, die sich hier beteiligen.

Hackwar

  • Bestätigter Nutzer
  • Beiträge: 9
Antw: Backenpart für Content-Plugin
« Antwort #9 am: 22. März 2012, 20:06:56 »
Hallo Sammy,
die Frage, die sich mir stellt, ist: Was willst du denn überhaupt spezielles, großes verwalten, das du ein Standalone-Plugin hast, aber keine Komponente dafür, gleichzeitig aber die Möglichkeiten von JForm dir nicht ausreichen?

Um das an dieser Stelle etwas abzukürzen: Wenn du im Endeffekt nur einige Schalter hast, die du global für das Plugin stellen willst, so aber nicht mit den vorhandenen Feldern von JForm abbilden kannst, dann schreib dir dein eigenes JForm Feld. Das ist weitaus einfacher und schneller gemacht, als eine eigene Komponenten für so einen einzelnen Parameter zu schreiben. Solltest du etwas konfigurieren müssen, was abhängig ist von einem Element, welches durch eine andere Komponente erzeugt wurde, (Parameter eines Menüeintrags oder Parameter eines Beitrags) dann füge deinem Plugin einen weiteren Event hinzu, mit dem du die JForm-Felddefinition entsprechend erweiterst. Das ist ebenfalls sehr einfach und schneller (und performanter) als eine eigene Komponente dafür zu bauen.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Backenpart für Content-Plugin
« Antwort #10 am: 23. März 2012, 07:52:22 »
Moin,

das sind Funktionen wie das erstellen von php-Templates in einem neuen Ordner für User-eigene Erweiterungen (meiner Funktionalität), in dem Rahmen halt auch ermitteln der vorhandenen User-Anpassungen (Dateifunktionen) und Sachen wie das Ermitteln der vorhandenen CSS und nach Möglichkeit auch das Ändern der CSS usw.

Es ist ja kein Problem, dass als Komponente zu machen, ich fänd's halt nur schöner (auch für den Anwender), wenn beides in einem kommt und die BE-Funktionen einfach da sind (mindestens das CSS).
Wenn man sich dann als Einsteiger Plugins ansieht, dann findet man teilweise komplexe BE-Optionen, erst beim genaueren Hinsehen stellt man dann fest, dass das letztlich doch alles nur einfach Forms sind.
Deshalb dann meine Frage, ob das doch irgendwie geht.

Kombi-Installationspakete habe ich noch nicht gefunden, also geht's dann wohl nicht anders (und für die Entwicklungs wäre das ja eh kein Unterschied).

Hackwar

  • Bestätigter Nutzer
  • Beiträge: 9
Antw: Backenpart für Content-Plugin
« Antwort #11 am: 23. März 2012, 14:45:00 »
Kombi-Installationspakete = Package Extension type. Siehe http://docs.joomla.org/Manifest_files#SQL

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Backenpart für Content-Plugin
« Antwort #12 am: 23. März 2012, 15:18:24 »
Wow!
Auf den ersten schenellen Blick sagt mir der Link auf SQL jetzt nicht wirklich etwas (ich kann das nicht in Beziehung setzen). Das Dokument hatte ich schon in meiner Linkliste, was auch immer, ich habe es also dann mindestens einmal überlesen :-)

Google mit 'Package Extension type' scheint aber hilfreich zu sein. Da war wieder das Thema 'die richtigen Suchbegriffe kennen'.
Thx!