Module installieren - OXID EE

Guten Tag,

ich habe soweit ich denken kann eine simple Frage hier an die Community.
Aktuell versuche ich mich an mein erstes Oxid-Modul.

Dazu habe ich einen Ordner im Oxid module ordner angelegt für mein Modul folgendes beinhaltet:

  • metadata.php
  • controllers
    – xxxordercontroller.php

Meine metadata.php beinhaltet folgenden Code:


<?php

/**
* Metadata version
*/
$sMetadataVersion = '1.1';

/**
* Module information
*/
$aModule = array(
    'id'           => 'xxxorder',
    "title"        => "xxx-Order",
    'description'  => array(
        'de' => 'Modul ',
        'en' => 'Module '
    ),
    'version'      => '1.0.0',
    'author'       => 'xxx',
    'url'          => 'http://xxx.com/',
    'email'        => '[email protected]',
    'extend'       => array(
        "order" => 'xxxorder/controllers/xxxordercontroller'
    )
);

?>

Zusätzlich dazu habe ich erstmal ein Grundgerüst eines Controllers erstellt (xxxorderscontroller):


<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of xxx
 *
 * @author xxx
 */
class xxxordercontroller extends xxxordercontroller_parent{
    
    
}

?>

Nun versuche ich das Modul testweise zu installieren, jedoch erhalte ich nach der Installation meines Modules die Meldung, dass mein Controller durchgestrichen ist.

Ich habe bereits hier auf dem Forum ein wenig zu dem Problem recherchiert und die Lösungsansätze die ich bislang hier gefunden haben, treffen auf mein Problem leider nicht zu.

Woran kann es noch liegen, außer daran, dass wohl die Array Keys Case Sensitive sind?

Bei der verwendeten Oxid-Installation handelt es sich um die Version 5.1.1

Hi,

fehlt vielleicht in der Deklaration in der metadata.php der /application/-Ordner zwischendrin? Ausserdem (momentan nur der Form halber) könntest Du einen sog. Vendor-Ordner benutzen. Ich hab dazu mal was geschrieben, vielleicht hilft’s:
http://www.marco-steinhaeuser.de/how-to-write-a-module-for-oxid-eshop-display-you-will-save-x-percent-on-the-product-details-page.html

Gruß

Moin,
wir haben einen Vendor-Ordner für unsere Entwicklungen mittlerweile angelegt. das obige Beispiel war rein zum Testen. Beim Anlegen der Verzeichnisstruktur habe ich mich an dem PayPal Module orientiert wie auch an dem OXID eShop Kochbuch d.h. innerhalb des eigentlichen Modulverzeichnisses welches sich bei uns in unserem Vendorordner zusammen mit einer vendormetadata.php befindet habe ich hier die folgende Struktur erst einmal angelegt:

  • components
  • controllers
  • models

Ich kann mir kaum vorstellen, dass es an der Ordnerstruktur liegt. Ich meine soweit ich das hier erkennen kann wird der Pfad zu den jeweiligen Klassen ausgehend vom Modules Verzeichnis in den Metadaten eingetragen.
Ich würde hier vermuten, dass es egal sein müsste ob ich nun ein “application” Directory anlege oder nicht, sofern ich das in der Metadata.php korrekt angebe.
So sehe ich das auch in dem PayPal-Modul was bei der EE 5.1.1 mitgeliefert wird. Jedoch werde ich das trotzdem einmal testen ob dies hilft. (Edit: Hilft nicht.)

Gestern habe ich mein Modul mit dem PayPal Modul verglichen, abgesehen dem, dass mein Modul ziemlich leer ist unterscheidet sich strukturell würde ich behaupten mein Modul nicht von dem Schema im PayPal Modul. Jedoch nichts desto trotz, wird meine Controller-Klasse nach der Installation des Modules als durchgestrichen gekennzeichnet.

Ich habe auch aus der Not heraus einfach mal gestern alle Methoden aus dem PayPal Modul entfernt und geschaut ob dieses sich dann auch noch normal installiert lässt um festzustellen ob es evtl. daran liegt, dass mein Modul Klassen ohne Methoden aktuell noch beinhaltet.

Nichts desto trotz, lässt sich das PayPal-Modul installieren, und die definierten Klassen werden korrekt geladen, aber in meinem Modul nicht. Was ist auch besonders Interessant finde ist, sobald ich eine Klasse versuche zu extenden die nicht existiert, wird mein Modul korrekt installiert und der jeweilige Controller als nicht durchgestrichen gekennzeichnet. Das finde ich etwas merkwürdig.

Vom Oxid-Lehrgang für die PE/EE erinnnere ich mich auch noch daran, dass uns die ac_module_internals empfohlen wurden. Mittels diesem Modul habe ich auch noch einmal geprüft ob meine metadata.php dem notwendigen Schema entspricht, da kriege ich die Ausgabe dass alles “gut sei”.

Muss ich ggf. noch etwas beachten wenn ich mein Modul installieren möchte?
Caches habe ich sicherheitshalber auch schon mehr als nur einmal geleert.

Edit (Gelöst):

Ich vermute einmal, dass beim deaktivieren eines Modules, dieses nicht komplett deinstalliert wird.
Die Lösung für mein Problem war nun folgendes Statement, welches direkt auf dem DBMS ausgeführt wurde:


DELETE FROM oxconfig 
WHERE oxvarname in ('aModulePaths', 'aModules', 'aDisabledModules', 'aLegacyTemplates', 'aModuleFiles');

Hallo nochmal,

dass beim deaktivieren eines Modules, dieses nicht komplett deinstalliert wird

Genau, das wäre meine zweite Vermutung gewesen und das passiert sicher häufiger mal unter der Entwicklung bzw. beim Testen. Empfehlenswert ist hier auch vt_devutils :wink:

Dennoch - zur Struktur:
http://wiki.oxidforge.org/Downloads/4.7.0_5.0.0#New_Structure

Dass das (jetzt noch) mit der “alten” Struktur funktioniert, ist der Abwärtskompatibilität geschuldet; das wird aber nicht ewig so bleiben. Deine Vorlage mit dem Paypal-Modul diskutiere ich grad aus…

Gruß

Das sind m.E. immer zwei Dinge die auffallen:

  1. Der Modul-Aktivierungsprozess ist nicht besonders robust und lässt sich schnell aus dem Tritt bringen
  2. Installations- /Deinstallationsmechanismus fehlt, es gibt nur Aktivierung/Deaktivierung

Richtig, Frank.
Und ich muss mich korrigieren, was die Ordner anbelangt. Es funktioniert beides, der Königsweg wurde (noch nicht) definiert.

Gruß

[QUOTE=Marco Steinhaeuser;138956]Hallo nochmal,

Dennoch - zur Struktur:
http://wiki.oxidforge.org/Downloads/4.7.0_5.0.0#New_Structure

Dass das (jetzt noch) mit der “alten” Struktur funktioniert, ist der Abwärtskompatibilität geschuldet; das wird aber nicht ewig so bleiben. Deine Vorlage mit dem Paypal-Modul diskutiere ich grad aus…

Gruß[/QUOTE]

Ok danke,das habe ich jetzt erstmal so bei meinem Module angepasst.

Das sind m.E. immer zwei Dinge die auffallen:

  1. Der Modul-Aktivierungsprozess ist nicht besonders robust und lässt sich schnell aus dem Tritt bringen
  2. Installations- /Deinstallationsmechanismus fehlt, es gibt nur Aktivierung/Deaktivierung

Gibt es dabei sonst noch etwas was man beachten sollte?
Was bringt das Modul noch zu Fall?

War doch alles richtig an deinem Modul, mehr kannst du nicht machen. Welche alten Einträge das im Einzelfall sind warum es nicht geht, kann man schwer sagen. Aber nach Moduleinträge löschen und tmp leeren funktioniert es (sofern das Modul keine Fehler hat).