Modulreihenfolge

Hallo,

ich schreibe ein Modul für ein OxidCE und habe dafür einige core-Klassen erweitert. Nun ist standardmäßig das Modul invoicePDF activiert, dass genauso wie mein Modul oxorder erweitert.

Nun wird meine Erweiterung aber nur ausgeführt, wenn im Adminbereich die Reihenfolge der Erweiterungen verändert wird, so dass meine oben steht.

Gibt es einen Weg, die Modulreihenfolge aus dem Modul heraus festzulegen? Ich möchte ja schon sicher gehen, dass alle installierten Module korrekt ausgeführt werden und somit auch meins. - und das am besten, ohne dass der Nutzer noch was einstellen muss.

Danke schonmal und Viele Grüße :slight_smile:

PS.: Ich hab das Forum durchsucht und nix gefunden. Vergebt mir bitte, falls ich die Antwort übersehen habe :wink:

du könntest schauen, was die Funktion macht, über die man es im BE manuell steuert und dann den Vorgang auch im onActivation event nachstellen

Hallo MariaH :slight_smile:

dafür gibt es beim OXID Framework das Parent-Konzept.

Du musst sicherstellen, dass deine Erweiterung-Klasse mit dem Parent versehen ist z.B.

class myclass extends myclass_parent {
  ...
}

und das die Methoden welche du überschreibst auch den Standard über einen Parent-Call laden z.B.

public function __construct()
{
  parent::__construct();
  // dein code
}

Viele Grüße
indianer3c

ps. So wird die Überladungskette eingehalten.

@ vanilla thunder: Danke, das werde ich mal prüfen :slight_smile:

@indiander3c: darauf habe ich geachtet und trotzdem wird die Methode nicht aufgerufen. Was das merkwürdige ist, ich erweitere die finalizeOrder aus oxorder. Die invoicePFD-Erweiterung fasst diese Methode gar nicht an.

Selbst wenn ich mit der Idee von VT die Reihenfolge aus dem Modul direkt ändern kann, befürchte ich also, dass damit eventuell andere Module nicht mehr richtig geladen werden können.

Ich würde gern wissen, woran es liegt, dass meine Methoden-Erweiterung einfach “wegfällt”. Mein Kollege hat dazu auch schon eine Frage auf dem Verteiler gestellt, aber bisher bleibt eine Antwort leider aus…

Hallo MariaH :slight_smile:

eine Idee wäre die Reihenfolge des Parent-Call zu drehen z.B.

public function finalizeOrder()
{
  // dein code
  parent::finalizeOrder();
}

Ansonsten musst du dich durch debuggen, immer ein Modul ausknipsen schauen ob es geht. Dann kannste schon mal das Modul woran es liegt einkreisen und dort weiter suchen, vielleicht wurde woanders die Überladungskette nicht eingehalten.

Viele Grüße
indianer3c

Ok, dann ist der Fehler wahrscheinlich gefunden. In oxorder gibt es die PDF-Methoden als Hülle und mit dem Kommentar, dass das über ein Modul gemacht wird. InvoicePDF ruft jetzt aber nicht diese Hüllen als parent::methode auf, wodurch dann wohl die Überladungskette durchbrochen wird?

Das ist ja doof, dass sowas bei einem Modul von oxid direkt passiert, dass ja in der Standard-Download-Version dabei ist…