Manifest Joomla 3 und 4

  • Hi


    Ich habe ein Joomla Plugin für Joomla 3 geschrieben. Im Plugin-Manifest ist angeben, dass es für Joomla 3.* ist. Nun möchte ich das Plugin so umbauen das es für 3 und 4 funktioniert. Wie muss ich das im Manifest angeben?


    Im Manifest habe ich aktuell:


    Code
    <extension type="plugin" version="3.1" ... 
    ... 

    Und in der xml für die Updates:


    Code
    <update>
    ... 
    <targetplatform version="3.*"... 
    ... 
    </update>



    Wie schreibe ich das um damit es Joomla 3 und 4 unterstützt?

  • Das einfachste ist, 1 <update>-Block für Joomla 3, ein weiterer für Joomla 4. Soweit ich mich erinnere, geht das gar nicht, verschiedene Haupversionsnummern in einen Block.


    EDIT (auch, wenn man der Doku nicht immer ganz trauen kann):

    Zitat

    Note: If your extension is Joomla! 2.5 and/or 3.1 compatible, you will be required to have separate <update> definitions for each version due to the manner in which the updater checks the version if you specify a number.

    https://docs.joomla.org/Deploying_an_Update_Server

  • Ok, die Update-Blöcke können vermutlich in der selben XML-Datei definiert werden? Also brauche ich in meinem Extensions-Manifest nur eine URL angeben?


    Das version="3.1" im Extension-Manifest gilt dann auch für Joomla 4?

  • Zwischen den Master-Tags <updates> kannst du beliebig viele <update>-Blöcke anlegen. Auch für unterschiedliche Erweiterungsversionen, z.B., wenn eine 2.0 nur <php_minimum> PHP 5.6.0 braucht, die 2.1 aber <php_minimum>7.2.0</php_minimum>.


    Oder zusätzlich ein Block für eine Developper-Version, den du dann mit dem <tags>-Tag kennzeichnest, damit sie nur auf Joomlas angeboten wird, die die Optionen unter Erweiterungen entsprechend eingestellt haben.


    Joomla ermittelt sich dann aus all den Blöcken den zum jeweiligen Joomla passenden und den mit der aktuellsten Version.


    version ist die Version der Erweiterung. Wenn eine auf 3 und 4 funktioniert, ist sie in beiden Blöcken gleich.


    Gibt auch Leute, die alle älteren Versionen in der Update-XML drinnen behalten und die neuen Blöcke einfach hinzufügen. Geht also alles.

  • Zitat

    version ist die Version der Erweiterung. Wenn eine auf 3 und 4 funktioniert, ist sie in beiden Blöcken gleich.

    Wie meinst du das? Wenn die selbe Extension unter Joomla 3 und Joomla 4 installierbar sein soll. Reicht es dann version=3.1 zu schreiben oder muss ich Joomla 4 separat angeben?

  • Zeilen 49 bis 85:

    https://github.com/GHSVS-de/up…sghsvs-update.xml#L49-L85


    Version der Erweiterung ist in beiden Fällen

    2019.06.11


    Zeilen 49 bis 66 richtet sich an Joomla 4.0.

    Zeilen 68 bis 85 an Joomla 3.9 und 3.10.


    Alles andere ist identisch, da ein und die selbe ZIP auf 3.9, 3.10 und 4.0 verwendbar ist.


    ---------------------------------------------------------------


    Selbe Datei Zeilen 4-17

    https://github.com/GHSVS-de/up…asghsvs-update.xml#L4-L17

    Eine ältere Version 2016.08.01, die NUR auf Joomla 3.6 angeboten wird.


    In Zeilen 34 bis 47

    https://github.com/GHSVS-de/up…sghsvs-update.xml#L34-L47

    befindet sich aber eine neuere Version 2017.09.05, die AUCH für Joomla 3.6 geeignet ist. Also zeigt Joomla die zum Update an und nicht die obige ältere Version 2016.08.01.


    Keine der älteren Versionen ist für Joomla 4 geeignet, also auch kein Block für Joomla 4.

  • Ich glaube es gibt da ein Missverständnis bei meiner Rückfrage.


    In der Manifest xml die mit in das Zip eingepackt wird: Dort muss auch eine (mindest?) Joomla Version angegeben werden. Das 3.1 im folgenden Snippet gibt die Joomla Version und nicht die extension Version an

    Code
    <extension type="plugin" version="3.1" ... 
    ...

    Reicht das so? Muss ich Joomla 4 extra angeben?

  • Weil ich da auch schon drüber gestolpert bin, habe ich das einmal nachgefragt: https://github.com/joomla/joomla-cms/issues/25814

    Re:Later
    Ich habe in deinem Manifest gesehen, dass du als Versionsnummer ein Datum nutzt. Zum Beispiel:

    <version>2019.06.11</version>. Joomla nutzt ja die semantische Versionierung (https://de.wikipedia.org/wiki/Versionsnummer) und wünscht sich dies auch für externe Erweiterungen. Natürlich darf man das bei seinen eigenen Erweiterungen so machen wie man möchte. Da ich den Eindruck habe, dass du dir alles immer gut überlegst: Gibt es für deine Versionierung andere Vorteile, als dass man das Datum der Version auf den ersten Blick sieht?

  • Gibt es für deine Versionierung andere Vorteile, als dass man das Datum der Version auf den ersten Blick sieht?

    Nein. Abgesehen von dem Vorteil für mich, dass ich nicht lang rumsuchen muss in meinem Chaos, welche Version denn heute dran ist. Außerdem hift es mir bei der Zusammenführung/Abgrenzung von "temporären Parallelversionen", die hier und da zum Einsatz kommen und von denen dann vielleicht das eine oder andere Feature in die "Hauptlinie" übernommen wird. Ändere ich in irgendeiner Online-Seite was, trage ich im jeweiligen Manifest-XML einfach plump die neue Datums-Version ein plus kleinem Vermerk in eigenem Tag, auch in dieser XML und kann das dann beim Zusammenführen (oder nicht) mit einem kleinen XML-Reader-Script schon mal grob sondieren, was da so los war.


    Kurz: Reiner Erfahrungswert bzgl. meiner Arbeit.