Modul schreiben

Hey,

wie erstell ic hdenn ein Modul was einige Funktionen der myorder.php (PDF-Rechnung) überspringt und anders bearbeitet?

myorder.php runterziehen, entsprechende Umbauten vornehmen, als my-myorder.php abspeichern, hochladen, einbinden

…et voilá!

(oder keine gute Idee?)

Generell: ja, das ist der einfachste Weg.

Theoretisch: ich habe nicht in die Lizenzbestimmungen reingeguckt und weiß nicht ob man den Code ändern darf

Praktisch: in 2 Wochen kommt ein Update und womöglich sind die Änderungen weg, daher würde die PHP Überladung eine totsichere Methode sein.

Hier gibts Anleitungen zum Thema Modulentwicklung:
http://wiki.oxidforge.org/Tutorials#Informations_on_how_to_create_Modules_.2F_Extensions_by_yourself

Bedenke, dass myorder.php zum Teil selbst ein Modul ist, daher müsste man darauf achten,d ass zuerst myorder.php und dann dein Modul geladen werden.

Bei mir wurde ide myorder.php direkt bearbeitet. Ist die einzigste Datei, die vom Shop selbst geändert ist.

Naja wir müssen die aber änder nda die Rechnung so wie sie ist nicht der Norm entspricht wie das Steuerbüro die will :rolleyes:

Naja es wir mach ich das denn das es erst die alte myorder auruft und dann meine?

es betrifft ja nur die “header,footer und standartexport” funktion

[QUOTE=Ralf09;89972]Hey,

wie erstell ic hdenn ein Modul was einige Funktionen der myorder.php (PDF-Rechnung) überspringt und anders bearbeitet?[/QUOTE]
Das Rechnungsmodul braucht m.E. dringendst ein “Refactoring”.

Es gibt heute ja sehr brauchbare “HTML to PDF”-PHP-Klassen, die die PDF-Erstellung revolutionieren… (z.B. mpdf)

Man kann damit sein Layout als HTML und CSS definieren, es von Smarty rendern, und dann von diesen Modulen zu PDF konvertieren lassen.

Damit kann man Layoutänderungen von Rechnungen sehr komfortabel erledigen.

Ja aber wir ändern 5 - 7 Zeilen in der Rechnung :wink: da würde es mir langenb wie oben beschrieben :slight_smile:

also ich bekomm das einfach net hin…kann mir jemand behilflich sein?

…und was bekommst du nicht hin? Die Datei zu bearbeiten oder einzubinden?

[QUOTE=vanilla thunder;92440]…und was bekommst du nicht hin? Die Datei zu bearbeiten oder einzubinden?[/QUOTE]

Naja ich hab zwar das Oxid wiki gelesen aber ich seh da momentan noch kein stich wie man denn diese funktionen umschreiben muss damit diese dann statt die standart funktion genommen wird…

angenommen ich will die von myorder.php die pdffooter() umschrieben

da muss ich das so machen, richtig?


class meineclasse extends PdfBlock
{
    public function pdfFooter( $oPdf )
    {
     ...
    }
}

am einfachsten wäre es so:
Schritt 1:
zuerst machst du eine Sicherung der myorder.php
und dann bearbeitest du in der myorder.php die gewünschte Funktion bis sie das tut was du möchtest.Und wenn es funktioniert kannst du diese Funktion in eine andere PHP Datei auslagern und daraus dann ein Modul bauen, welches die Funktion aus myorder.php überschreibt, das wäre dann Schritt 2.

Den zweiten Schritt machen wir dann wenn du mit dem ersten fertig bist :slight_smile:
(in der myorder.php gibts mehrere Klassen, da muss ich erst mal selbst reingucken)

[QUOTE=vanilla thunder;92452]am einfachsten wäre es so:
Schritt 1:
zuerst machst du eine Sicherung der myorder.php
und dann bearbeitest du in der myorder.php die gewünschte Funktion bis sie das tut was du möchtest.Und wenn es funktioniert kannst du diese Funktion in eine andere PHP Datei auslagern und daraus dann ein Modul bauen, welches die Funktion aus myorder.php überschreibt, das wäre dann Schritt 2.

Den zweiten Schritt machen wir dann wenn du mit dem ersten fertig bist :slight_smile:
(in der myorder.php gibts mehrere Klassen, da muss ich erst mal selbst reingucken)[/QUOTE]

naja die myorder hab ich ja schoin angepasst :wink: und macht ja auch das was sie soll :wink: also jetzt schritt 2 !? :slight_smile:

okay.
Paar Zeilen über der Funktion pdffooter($oPdf)
steht:

class MyOrder extends MyOrder_parent
{

das bedeutet, dass das hier bereits ein Modul ist, dann muss unser Modul etwa so aussehen:

class meineclasse extends meineclasse_parent
{ 
    public function pdfFooter( $oPdf ) 
    { 
     ... 
    } 
} 

den Rest machen wir in metadata.php
zuerst würde ich versuchen MyOrder zu überladen. falls es nicht klappen sollte (ich würde mich aber nicht an dem grünen Lämpchen orientieren, das lügt ab und zu, sondern wirklich ausprobieren ob die Rechnung anders aussieht), dann würde ich gucken, welche Klasse von MyOrder überladen wird und diese dann überladen

[QUOTE=vanilla thunder;92458]okay.
Paar Zeilen über der Funktion pdffooter($oPdf)
steht:

class MyOrder extends MyOrder_parent
{

das bedeutet, dass das hier bereits ein Modul ist, dann muss unser Modul etwa so aussehen:

class meineclasse extends meineclasse_parent
{ 
    public function pdfFooter( $oPdf ) 
    { 
     ... 
    } 
} 

den Rest machen wir in metadata.php
zuerst würde ich versuchen MyOrder zu überladen. falls es nicht klappen sollte (ich würde mich aber nicht an dem grünen Lämpchen orientieren, das lügt ab und zu, sondern wirklich ausprobieren ob die Rechnung anders aussieht), dann würde ich gucken, welche Klasse von MyOrder überladen wird und diese dann überladen[/QUOTE]

Also sagen wir ich mach einen datei meinerechnung.php in der folgendes steht

class MyOrder extends MyOrder_parent
{
    public function pdfFooter( $oPdf ) 
    { 
     ... 
    } 
}

und was kommt in die metadata.php?

schau mal hier:


http://docu.oxid-esales.com/CE/sourcecodedocumentation/4.6.0.44406/metadata_8php.html

Ich hab jetzt

myorder.php

class MyOrder extends MyOrder_parent
{
    public function pdfFooter( $oPdf ) 
    { 
     ... 
    } 

    public function pdfHeader( $oPdf )
    {
     ....
    }

    public function exportStandart( $oPdf )
    {
     .....
    }
}  

und die metadata.php

$aModule = array(
    'id'           => 'unsererechnung',
    'title'        => 'Geänderte Rechnung',
    'description'  => 'Angepasste Rechnung.',
    'thumbnail'    => 'picture.png',
    'version'      => '1.0',
    'author'       => 'Wir',
    'extend'       => array(
        'oxorder' => 'unsererechnung/myorder'
    )
);

Ist das jetzt soweit korrekt?

So nach paar Monaten meld ich mich auf das Thema…also nach dem ich das ne weile ruhen gelassen habe und mich jetzt wieder dransetzen will/muss stehe ich nach wie vor auf dem schlauch und bekomm das net hin…:confused:

ist das nun richtig was ich im oberen Post stehen habe?

sieht soweit korrekt aus

[QUOTE=vanilla thunder;99843]sieht soweit korrekt aus[/QUOTE]

und wieso läuft das da nicht? Liegt das vielleicht an der Aktivierung im Shop? So sieht es im Shop aus (siehe Anhang)

die grüne “Leuchte” bedeutet, dass dein Modul aktiv ist.
Schau mal in den Webserver error los, könnte sein, dass er irgendeine Datei nicht findet.