Module installieren über Composer (Oxid6)

Hallo Comunity,

aktuell befasse ich mich mit dem Oxid 6.

Hier benötige ich Hilfe bezüglich dem Installieren von Modulen/Themes via Composer.

Soweit ich das verstanden habe müssen diese über die composer.json installiert werden.

Meine Module/Themes liegen in einem GitLab-Repository (develop-Branch):

  • modules
    • modules_1
      composer.json
    • modules_2
      composer.json
  • themes
    • theme_1
      composer.json
    • theme_2
      composer.json

Wie kann ich nun verschiedene Module (z.b. modules_1 u. modules_2, theme_2) in der composer.json von Oxid installieren?

Können Sie mir ein ausführliches Beispiel geben?

Oder muss für jedes Modul/Theme ein eigenes Repository erstellt werden?

Danke für die Hilfe.

1 Like

hier ist das erste Suchergebnis von Google:

@Marat, ich glaube, @gondor geht es eher um das installieren von Modulen als um das Erstellen, das Stefan beschreibt.

Im Grunde können “alte” Module, die keine metadata2 benutzen oder keine Namespaces einsetzen, direkt wie auch früher einfach hochgeladen und aktiviert werden. Manchmal müssen diese älteren Module noch angepasst werden, je nachdem, was überladen wurde. Das ist hier beschrieben:

Im Fall von Modulen, die explizit schon für OXID eShop 6 geschrieben wurden und metadata2 und Namespaces benutzen, ist ein weiterer Schritt unter der Installation erforderlich:

  • Modul in den Module-Ordner hochladen (wie bisher)
  • Composer run, um die Namespaces im Shop anzumelden (das ist neu!)
  • Modul aktivieren (wie bisher)

Alternativ können Module, die exklusiv für OXID eShop v6 geschrieben wurden, direkt über Composer installiert werden.

Hallo,

danke für die Rückmeldung.

Bei meinem Anliegen geht es nicht um die Erstellung der Module, sondern eher um das Installieren bzw. spätere Deployment mittels Composer. Hier steh ich auf dem Schlauch :wink:

Aktuell ist es so, dass wir alle Module in eigene Branches eines Repositories haben. Diese mergen wir in einem Develop-Branch der später wiederum in einem Master-Branch gemerged wird. Per Deployment wird der Master-Branch dann “ausgerollt”.

Der Master-Branch sieht dann so aus:

modules/
modules_1/
=> alle notwendigen Modul-Dateien
=> composer.json
modules_2/
=> alle notwendigen Modul-Dateien
=> composer.json

Application/views/
theme_1/
=> alle notwendigen Theme-Dateien
=> composer.json
theme_2/
=> alle notwendigen Theme-Dateien
=> composer.json

Jetzt ist die Frage, wie das Handling mittels Composer gemacht wird. Wenn ich die Module in den Master pushe, müsste doch das Composer-Update angestossen werden, damit die Module installiert/aktualisiert werden (soweit ich das verstanden habe)

In der Oxid-Shop composer.json müssen dafür die entsprechenden Module bekannt gemacht werden:

“repositories”: [
{
“type”: “vcs”,
“url”: “https://”
}
],
“require”: {
“xyz/modules_1”: “dev-master”,
“xyz/modules_3”: “dev-master”
},

In dem Master-Branch liegt aber keine composer.json im Root-Verzeichnis (nur in den entsprechenden Modulen) bzw. sagt mir Composer update:

No valid composer.json was found in any branch or tag of https://, could not load a package from it.

Wie müsste denn die composer.json im master aussehen, damit die Module installiert/aktualisiert werden können bzw. ist der Weg so richtig oder muss das Ganze ganz anders gehandelt werden?

Danke für Antworten.

1 Like

Die Anleitung zum Module installieren verweist auf ein “OXID eShop Composer Plugin” mit einem Link zu Github, das “Plugin” hat eine Readme die überhaupt nix zur Installation erwähnt und es sind zwar php-dateien aber keine einzige index.php oder sonst eine Datei die man als Startpunkt identifizieren könnte? Gibts bei Oxid jetzt auch Plugins neben den Modulen? Ist das ein Modul? Oder ist das ein Plugin für Composer? Was macht das? Wo muss das hin? Fragen über Fragen und überall wo drüber getextet wird, wie hier im Forum reden die Leute, als wär es doch total offensichtlich und man bräuchte gar keine Anleitung dafür:

“Einfach Module über Composer.json installieren” ist ja ein netter Anhaltspunkt, nur, wie? ich kapier es scheinbar einfach nicht und hätte gerne mal ne Anleitung die die Modulinstallation vom Download bis zur Aktivierung/Konfiguration eines Moduls erklärt.
Ich kann mit “musst du einfach über composer machen” nämlich so richtig null anfangen. Da müsste mir doch zumindest jemand sagen, was ich für einen composerbefehl bräuchte, damit das richtige modul heruntergeladen wird oder was hab ich hier missverstanden?

Ein gutes Beispiel sind vielleicht die Tags, erst hab ich die Funktion vermisst, dann hab ich mehr oder weniger zufällig in einer Anleitung zu etwas anderem erfahren, dass Tags ausgelagert wurden, gibts jetzt per Modul. Nur leider findet sich scheinbar kein solches Modul im Exchange, inzwischen hab ich (auch mehr oder weniger zufällig) den Modulconnector gefunden aber auch da gibts das nicht, und Anleitungen dazu scheint es auch nicht zu geben. Im Forum gibts nur Threads mit Problemen mit dem Modul, nix zum Download oder installation. Wo soll ich noch danach suchen?

1 Like

Die Anleitung die du gefunden hast richtet sich an Entwickler die selber Module schreiben wollen. Wenn du nur ein Modul installieren willst muss die Installations-Anleitung beim Modul dabei sein. Das Composer-Plugin ist Bestandteil einer Oxid 6 Installation, muss man also nicht extra installieren.
Module die keine Namespaces verwenden kann man wie früher downloaden und in den modules-Ordner kopieren. Bei anderen macht man das über composer, der Befehl muss in der Installations-Anleitung stehen. Das Tags-Modul gibt’s hier: https://github.com/OXIDprojects/tags-module, und unten in der Readme stehen verschiedene Möglichkeiten für die Installation.

Hallo ploxid,

Ein Versuch Klarheit ins Dunkel zu bringen!

  1. Composer hat mit Exchange zu tun!
    Mit Composer kann man Programme über die Komandozeile installieren und aktualisieren.
  2. Packagist listet alle auf Github veröffentlichten Erweiterungen auf. Wenn man dort in die Suche oxid und tags eingibt, wird folgendes Reposity aufgelistet:

oxid-projects/tags-module

Jetzt loggt man sich über die SSH Konsole ein und geht in die OXID 6 Installation (dorthin wo die composer.json liegt) und gibt den Befehl

composer require oxid-projects/tags-module (kopiert aus Packagist) ein und bestätigt mit Enter
Im Erfolgsfall sollte jetzt das Modul automatisch installiert werden.

Ich hoffe ich konnte ein paar dunkle Wolken vertreiben
Steffen Winde

1 Like

Echt? :wink:

PS: wenn man die Dev-Tools nicht installiert hat muss man an den Installations-Befehl noch --update-no-dev dranhängen, sonst werden die auch gleich installiert.

Ne nicht wirklich. Exchange ist ein (möchtegern) Modulkatalog und composer ein Paketmanager.

Auch nicht ganz, auf packagist sind nur die Module/Repos verfügbar, welche der Inhaber auch mit packagist verknüpft hat.

Hallo, mein Ordner heißt oxid6. Dort befindet sich unter anderem composer.json und die beiden Ordner source und vendor. Die Verbindung habe ich über putty hergestellt. Gebe ich jetzt den composer-befehl ein, mit oder ohne ` am Anfang und Ende, kommt die Meldung -shell: composer: command not found.
Mir ist auch nicht klar, wie der Composer an die Adresse des child_themes kommt.(https://github.com/eComStyle/Flow_Childtheme.git)
Ich weiß auch nicht,wie ich auf der Seite von github vorgehen muss.
Stehe jetzt auf dem Schlauch.

Hi,

anscheinend funktioniert composer bei dir nicht. Wie konntest du denn so den Shop installieren?

Das Childtheme geht notfalls auch ohne composer zu installieren:
Die Datei theme.php und den Ordner tpl kopiert du nach:

\source\Application\views\flow_child 

(der Order flow_child muss von dir neu erstellt werden).

Den Ordner out komplett kopieren nach:

\source

Aktivieren, fertig.

Den Shop hat Profihost für kleines Geld für mich installiert.

Aha. Composer wäre nicht schlecht, denn ansonsten wirst du kein einziges OXID6-Modul installieren können.

Evtl. kannst du ihn ja irgendwie zum Funktionieren bewegen, gibt ja sicher ne FAQ, Doku, Google oder den Support.

Ja klar, liegt ja in meinem Interesse.
Habe von dir das Modul zur Entfernung des Preisalarms gefunden. Ist bei mir auch noch eine Baustelle.

Das flow_child ist aktiviert, vielen Dank für deine Hilfe.

Ich habe in den 80ern 10 Jahre Programme in Cobol auf einem großen IBM-Rechner geschrieben. Da hatte man mit der Systemumgebung so gar nichts am Hut, dafür gabs noch das Berufsbild des Operators. Heute eine fast ausgestorbene Spezies.

Also so ganz ohne Kenntnisse bin ich nicht. Das nur am Rande.

Habe gerade festgestellt, das nach der Aktivierung mein Testshop im Produktivmodus war.

Hallo, wollte mal deinen /antipreisalarm von github installieren, klappt auch nicht.
Und das soll ja dann auch in das child-theme.
Ich glaube ich habe da ein Verständnisproblem.
Muss ich in der composer.json noch Eintragungen machen? Irgend wo müssen doch die infos stehen, wo der composer das modul findet,oder?

Bist du so wie in der Readme beschrieben vorgegangen?

Ja klar.
So war der Weg:

  1. In winSCP putty geöffnet und mich bei meinem Server angemeldet [email protected]
  2. in den Ordner Oxid6 gewechselt, das ist meine root
  3. Composer-befehl eingegeben, Ergebnis: -shell: composer: command not found

Einen SSH-Zugang habe ich.

Wie bereits geschrieben:

…bzw. Composer ist auf dem Server gar nicht installiert.

Da Profihost den Shop installiert hat, gehe ich davon aus, dass der composer mit installiert ist. Aber wie war das noch mit den Pferden vor der Apo?
Habe heute bei denen ein Ticket erstellt und hoffe morgen auf schnelle Antwort.
Melde mich dann dazu, vllt. haben ja andere ein ähnliches Problem und bekommen auf diesem Weg eine schnelle Lösung.