Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Variable "$PAYMENT_METHOD" (Zahlungsweise) in der "change_order" mail ausgeben

    donpingu

    • Neu im Forum
    • Beiträge: 7
    Hallo,

    ich verzweifle gerade an der Abfrage der Variable "$PAYMENT_METHOD" (Zahlungsweise) in der "change_order" mail. Verwendete Shop-Version : modified 1.5d

    In der "order" mail kann ich wunderbar mit dem Status von "$payment_method" arbeiten und verschiedene Texte bei verschiedenen Zahlugsmethoden ausgeben lassen.
    z.Bsp: {if $PAYMENT_METHOD == 'PayPal'}Mein Text bla bla bla... {/if}  --> klappt prima!!

    Leider funktioniert das nicht in der "change_order" mail. Die Variable $PAYMENT_METHOD ist dort nicht zugewiesen wie es aussieht und ich stelle mich gerade völlig zu blöd an dies zu ändern.

    Kann mir jemad mit einem kleinen Denkanstoss wieder auf die Spur helfen oder hat eine Lösung parat?

    DANKE im Voraus.

    -dp (Pingiuine sind furchtbar zäh)



    Linkback: https://www.modified-shop.org/forum/index.php?topic=29088.0

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Schau dir mal die /admin/orders.php an unter switch case 'update_order':.
    Da findest du die zur Verfügung stehenden Smarty-Platzhalter.
    An die Zahlungsmethode kommst du z.B. mit $order->info['payment_method'].

    Gruß,
    noRiddle

    donpingu

    • Neu im Forum
    • Beiträge: 7
    @ noRiddle

    Besten Dank für Deine nette Antwort. Genau an der Stelle - /admin/orders.php - hatte ich inzwischen auch schon gebohrt und die sql-abfrage um gewünschte Felder (payment_method, language u.s.w.) ergänzt. Das war im Prinzip auch die Lösung. Als smarty-Zuweisung habe ich verwendet:
    Code: PHP  [Auswählen]
    $smarty->assign('PAYMENT_METHOD', $check_status['payment_method']);
    Ergibt übrigens das selbe Ergebnis wie dein Vorschlag hierzu.

    Leider erhalte ich als Ausgabe dabei aber nur den modulnamem (banktransfer)!!

    Um den modulnamen für die Zahlungsmethode umzuwandeln habe ich dann folgenden code versucht:
    Code: PHP  [Auswählen]
     $smarty->assign('oID', $order->info['order_id']); //DokuMan - 2011-08-31 - fix order_id assignment
            if ($order->info['payment_method'] != '' && $order->info['payment_method'] != 'no_payment') {
        if (isset($send_by_admin)) { // web28 - 2010-03-20 - Send Order by Admin - $send_by_admin is defined in /admin/orders.php
          include (DIR_FS_LANGUAGES.$order->info['language'].'/modules/payment/'.$order->info['payment_method'].'.php'); //DokuMan - 2010-09-18 - Undefined variable: send_by_admin
        } else {
          include (DIR_WS_LANGUAGES.$order->info['language'].'/modules/payment/'.$order->info['payment_method'].'.php');
        }
                    $payment_method = constant(strtoupper('MODULE_PAYMENT_'.$order->info['payment_method'].'_TEXT_TITLE'));
            }
            $smarty->assign('PAYMENT_METHOD', $payment_method);

    Das führt aber zu div. Fehlern, bei denen ich bisher nicht weitergekommen bin.

    Ist aber für meinen momentanen Verwendungszweck auch nicht unbedingt nötig, ich brauche ja nur einen eindeutigen "handler" um eben entsprechende if-Abfragen bei den change_order mails zu erzeugen. Das klappt auch mit dem modulnamen prima.

    Also nochmals Danke für Deine Mühe, vielleicht kennst Du oder jemand anderes auch noch eine Möglichkeit den modulnamen jeweils passend zur Sprache umzuwandeln, damit {$PAYMENT_METHOD} anstelle von "banktransfer" auch z.Bsp. "Lastschrift" ausgibt (so wie in den order Mails).

    Liebe Grüße
    -dp

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Benutze einfach die in der /admin/orders.php definierte Funktion get_payment_name().
    Also z.B. so
    Code: PHP  [Auswählen]
    echo get_payment_name($order->info['payment_method']);

    Und das Smarty wird entsprechend so definiert:
    Code: PHP  [Auswählen]
    $smarty->assign('PAYMENT_METHOD', get_payment_name($order->info['payment_method']));

    Queries müssen überhaupt nicht erweitert werden.

    Gruß,
    noRiddle

    donpingu

    • Neu im Forum
    • Beiträge: 7
    @ noRiddle

    Das war's!! BESTEN DANK
    Die Verwendung der "get_payment_name()" Funktion hat jetzt tatsächlich die gewünschte Lösung ergeben. Hatte ich komplett übersehen. Jaja, der Wald, die Bäume und das Brett vor Augen.

    Bin gerade dabei, eine brauchbare Lösung für SEPA-Lastschriftverfahren zu implementieren und das war nun noch das fehlende i-Tüpfelchen. Sobald ich die Zeit finde meine SEPA-Lösung für's Forum aufzubereiten und etwas zu dokumentieren, stelle ich dann gerne meine Ergebnisse zur Verfügung.

    Grüße
    -dp

    (Pinguine sind unglaublich zäh)