Images bei der Installation kopieren

  • Hallo, ich würde gern in einer selbst entwickelte Komponente im "images" Pfad einen Ordner erstellen und ein Bild dort hin kopieren. Geht das über die xml Datei? Wenn ja wie, wenn nein wie kann ich das trotzdem automatisch tun.


    Ich hoffe ich habe mich verständlich genug ausgedrückt.

  • 1) Der "normale" Weg ist, dass Erweiterungen ihre mitgebrachten Assets in den /media/-Ordner Joomlas ablegen lassen. Zumindest geht das dann ohne Zutun während der Installation.

    https://docs.joomla.org/Manifest_files#Media_files

    Im Unterschied zum Beispiel dort, lege ich auch die Bilder im Paket in einen Unterordner /media/images/ des Install-Pakets und schreibe:

    Code
    1. <media folder="media" destination="com_example">
    2. <folder>images</folder>
    3. <folder>css</folder>
    4. <folder>js</folder>
    5. </media>

    2) Eine weitere Variante ist ein PHP-File zu verwenden, meist script.php genannt, das dann u.a. auch Kopierarbeiten nach der Installation ausführt:

    https://docs.joomla.org/Manifest_files#Script_file


    3) Weiters gibt es den Erweiterungts-Typ "file", mit dem man einfach nur Dateien in Joomla einkopieren kann. Leider nicht so gut dokumentiert (ich finde wenigstens nix).

    Dann musst aber ein übergeordnetes Paket/Package erstellen, das die Komponente und die File-Erweiterung enthält, damit beide in einem Installationsvorgang instalöliert werden:

    https://docs.joomla.org/Package


    Soweit ich sehe, sind alle verlinkten Docs auch in Deutsch verfügbar. Keine Gewähr wie "gut"!

  • Vielen Dank zunächst für die Antwort.

    Ich habe dann mal am WE Zeit das auszuprobieren. Der 3. Punkt ist interessant.

    Das mit dem Media Ordner habe ich schon gemacht, das kenne ich so. Nur brauche ich halt unter <images> einen Ordner.

    Da habe ich auch noch keine weiteren Hinweise in der Doku gefunden wie das in der Manifest Datei einzubinden ist.

    Das mit dem Script File sollte ich mir genauer ansehen.

    PS: ich bearbeite gerade meine Komponente um sie auf Jo4 vorzubereiten.


    freundliche Grüße

  • Das mit dem Script File sollte ich mir genauer ansehen.

    PS: ich bearbeite gerade meine Komponente um sie auf Jo4 vorzubereiten.

    Dann solltest du vielleicht gleich bei J-4-Erweiterungen spicken gehen (bzgl. Namespacing und Kram), z.B. hier:

    https://github.com/joomla-exte…om_patchtester/script.php


    Da sehe ich auch eine eigene Methode

    Code
    1. private function copyLayouts()

    die du vermutlich adaptieren kannst.


    Die "genamespacten" funktionieren so auch schon unter J3. Die grundlegenden Geschichten zu Aufbau und verlinkter Doc haben sich nicht geändert. Meine auch, schon mal ausprobiert zu haben, dass auch die "old-fashioned" script.php noch unter Joomla 4 läuft. Meinen ist halt nicht Wissen ;-)

  • Hallo und noch mal danke. Ich habe inzwischen herausgefunden, dass man mit dem <media> Tag in der xml jedes belibige Verzeichnis innerhalb jomla befüllen kann. -> Die Sache hat aber einen fatalen Haken, nach der Deinstallation ist das gesamte Joomla Verzeichnis gelöscht!


    Code
    1. <media folder="quellpfad" destination="../">
    2. <filename>images/zielpfad/zieldatei.png</filename>
    3. </media>

    Das habe ich "ergoogelt". Voraussetzung zum Installieren ist, dass die gesamte Struktur des Ziels unter "quellpfad" vorhanden ist. Aber wie gesagt das sollte man nicht tun, denn beim Deinstallieren bekommt man hinterher einen riesen Schreck. Entweder es ist ein Bug in Joomla4 Alpha12, oder es soll so.

    @ghsvs.de: An eine eigene Scriptdatei habe ich mich noch nicht herangewagt. - Das Thema ist so gesehen erst mal für mich gegessen. - Doch noch ne Frage in der Scriptdatei benötigt man doch eigentlich nur die Scripte die abweichend vom Standard in Joomla sind oder?


    MfG

  • Zur script-Datei. Es kommt ganz darauf an, aber im Prinzip hast du recht. Wenn du "alles wie immer" haben willst,brauchst du kein eigenes Script.
    Die Dateien, die im XML irgendwo hin geschoben werden, sollten beim Deinstallieren auch wieder entfernt werden.

    Oder nicht? zero24?


    Wenn nach der Deinstallation das gesamte Joomla gelöscht ist, dann wäre das wirklich ein Hammer! Und eine Brandmeldung - ich werde es gleich testen.

    loschle@gmx.de kannst du das eigentlich mit der aktuellsten nightly build reproduzieren?

    Joomla_4.0.0-beta1-dev-Development-Full_Package.zip

  • Doch noch ne Frage in der Scriptdatei benötigt man doch eigentlich nur die Scripte die abweichend vom Standard in Joomla sind oder?

    Bei mir hat mittlerweile jede Erweiterung eine Script-Datei. Sie ist kein Zauberwerk, sondern stinknormales PHP.

    Du kannst so bspw. auch nach Joomla-Standard definieren, dass deine Erweiterung nicht in Joomla 3 installierbar ist. Macht nur Frust bei Benutzern ;-)

    Wenn nach der Deinstallation das gesamte Joomla gelöscht ist, dann wäre das wirklich ein Hammer

    Klar sollte das eigentlich nicht möglich sein, aber bei "korrekter" (üblicher) Verwendung des <media>-Tags, wird ja bei Deinstallation auch alles gelöscht, was sich aus folder und destination als Pfad ergibt.


    Es gibt auch noch andere Möglichkeiten ganze Core-Verzeichnisse bei Deinstallation zu löschen und/oder bei Installation kaputt zu machen. Wenigstens für das /libraries/ wurde bereits eine Blacklist erstellt, die aber nur bestimmte Fälle des "Killens" abfängt.

    https://github.com/joomla/joomla-cms/pull/27300


    Ich sehe aber beim <media>-Tag irgendwie keine praktikable Möglichkeit solche Blacklists zu verwenden. Wohl eher eine Whitelist ""praktikabel"".

  • Und astrid beschreibt hier (weiter runterscrollen) eine Script.php-Variante ohne das

    Code
    1. extends InstallerScript

    Bin ich nicht auf dem Laufenden, ob das unter Joomla-4-only dann generell nicht mehr nötig ist.

    Ich gucke immer in Joomla! selbst ab und das Skript von com_admin erweitert die Klasse InstallerScript nicht. Deshalb habe ich auch einmal so versucht.


    Wenn man vom InstallerScript etwas erben möchte, dann sollte man das extend InstallerScript hinzufügen.

  • Ich danke Euch für die nützlichen Tipps. Ich konnte schon mal Komponente und Modul als Paket installieren. Jetzt habe ich aber noch keinen Weg gefunden Bilder mit zu installieren unter den <images> - Pfad.

    Hier habe ich GPX-Dateien mit einem Skript bei der Installation vom Source-Verzeichnis media/plg_fields_aggpxtrack/gpxfiles/ in das Joomla!-Verzeichnis /images/com_aggpxtrack/ kopiert.


    Passe das an die Endung deiner Bilddateien an, wenn du magst (Das Löschen beim Deinstallieren fehlt hier noch :().

  • Hallo an Alle,

    ich bin sehr froh, dass ihr euch dem Thema gewidmet habt. Die Hinweise bin ich gerade am verarbeiten. astrid Deine Einführung in die Joomla4 Welt halte ich für sehr nützlich. Ich werde versuchen all das zu verstehen und bei mir umzusetzen. Das wird eine Weile dauern, denn so Sattelfest im Programmieren bin ich nicht. - Da ist viel "ausprobieren" dabei.


    MfG