[Paypal-Modul] Wie spricht man die Zahlungsmethode an?

Ich habe das Paypal-Modul integriert und das funktionierte auch einwandfrei.

Nun wollte ich gerne bei der Auswahl der Bezahlungsart ein kleines Info-Bild einfügen. Hierzu habe ich ein Modul erstellt, welches mir folgenden Block in der payment.tpl überschreibt:

[{block name="select_payment"}]

Dort wird eigentlich die Variable $sPaymentID aufgegriffen. Im Paypal-Modul kommt diese auch vor.Nun dachte ich, dass ich mit folgender Zeile bei allen Zahlungsarten ein Bild hinzufügt:

<img class="info" src="[{$oViewConf->getModuleUrl("hi_orderstep3_infotextenew", "upload/i.png")}]"/>

Es wird allerdings bei allen Zahlungsarten bis auf Paypal mein Bild hinzugefügt. Hat jemand eine Ahnung, woran das liegen kann? Habe ich den falschen Block gewählt, oder hat das Paypal Modul einfach einen anderen Ansatz um sich als Zahlungsmethode einzuschleichen.

Ich hätte mal versucht in der Payment.tpl folgende Zeile einzufügen:

[{elseif $sPaymentID == “oxidpaypal”}]

Hat leider auch nicht funktioniert. Hab jetzt an den Paypal-Support geschrieben.

Der Versuch ist gar nicht mal verkehrt. Hast Du mal geschaut, was $sPaymentID eigentlich drin steht? Meistens wird einfach mit dem falschen Wert verglichen, so dass die Bedingung natürlich nicht zutrifft.

[QUOTE=mcdutch;142661]Hierzu habe ich ein Modul erstellt, welches mir folgenden Block in der payment.tpl überschreibt:

[{block name="select_payment"}]

[/QUOTE]
Das Paypal-Modul überschreibt diesen Block ebenfalls, änder mal die Reihenfolge.

Danke euch beiden für die Antworten.

Ich habe mir die Variable schon mal so ausgeben lassen:

[{$sPaymentID}]

Und sie gibt mir wie erwartet alle Zahlungsarten aus, die es zur Auswahl gibt. Nur leider eben eine nicht und das ist Paypal!

Gebe ich den Text oben aber zum Beispiel im Block “change_payment” aus, dann werden mir alle Zahlungsarten angezeigt, inklusive Paypal.

Kann man die Reihenfolge denn wirklich ändern, wenn ein und der selbe Block, öfters überschrieben wird? Wie macht man das? In der Metadata?

Eigentlich müsste es auch gehen, wenn ich das Paypal-Modul umschreibe. Sehe mir gerade den Block, der überschrieben wird an und muss sagen, dass das Modul da schon einiges macht:

[{if $sPaymentID == "oxidpaypal" && $oViewConf->isStandardCheckoutEnabled()}]
    [{oxstyle include=$oViewConf->getModuleUrl('oepaypal','out/src/css/paypal.css')}]

    <dl>
        <dt>
            <input id="payment_[{$sPaymentID}]" type="radio" name="paymentid" value="[{$sPaymentID}]" [{if $oView->getCheckedPaymentId() == $paymentmethod->oxpayments__oxid->value}]checked[{/if}]>
            <label for="payment_[{$sPaymentID}]"><b>[{ $paymentmethod->oxpayments__oxdesc->value}]
            </b></label>
        </dt>
        <dd class="[{if $oView->getCheckedPaymentId() == $paymentmethod->oxpayments__oxid->value}]activePayment[{/if}]">
            [{ if $paymentmethod->getPrice() }]
            [{if $oxcmp_basket->getPayCostNet() }]
            [{ $paymentmethod->getFNettoPrice() }] [{ $currency->sign}] [{oxmultilang ident="OEPAYPAL_PLUS_VAT" }] [{ $paymentmethod->getFPriceVat() }]
            [{else}]
            [{ $paymentmethod->getFBruttoPrice() }] [{ $currency->sign}]
            [{/if}]
            [{/if}]
            <div class="paypalDescBox">
                <a href="#"><img class="paypalPaymentImg" src="[{$oViewConf->getModuleUrl('oepaypal','out/img/')}][{oxmultilang ident="OEPAYPAL_LOGO_IMG"}]" border="0" alt="[{oxmultilang ident="OEPAYPAL_PAYMENT_HELP_LINK_TEXT"}]"></a>
                <a href="#" class="paypalHelpIcon">?</a>

                [{assign var="paypalHelpLink" value="OEPAYPAL_PAYMENT_HELP_LINK"|oxmultilangassign}]
                [{oxscript add="$('.paypalPaymentImg, .paypalHelpIcon').click(function (){window.open('`$paypalHelpLink`','olcwhatispaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=500, height=450');return false;});"}]

                [{if $paymentmethod->oxpayments__oxlongdesc|trim}]
                    <div class="paypalPaymentDesc">
                        [{ $paymentmethod->oxpayments__oxlongdesc->getRawValue()}]
                    </div>
                [{/if}]

            </div>

            [{if $oViewConf->sendOrderInfoToPayPal()}]
            <p class="paypalExpressCheckoutMsg">
                <input type="checkbox" name="displayCartInPayPal" value="1" [{if $oViewConf->sendOrderInfoToPayPalDefault()}]checked[{/if}]>
                [{oxmultilang ident="OEPAYPAL_DISPLAY_BASKET_IN_PAYPAL"}]
            </p>
            [{/if}]
        </dd>
    </dl>

[{elseif $sPaymentID != "oxidpaypal" }]
    [{$smarty.block.parent}]
[{/if}]

Wenn dein Modul nach PP an die Reihe kommt und dieses [{$smarty.block.parent}] nicht aufruft wird dein Block nicht geladen. Reihenfolge kann man in der DB ändern oxtplblocks OXPOS.

Was ist, wenn in der Reihenfolge für alles eine 1 angegeben ist. Wird dann alles überschrieben?

Das Problem konnte ich lösen. Ich habe einfach nur die Datei von Paypal, die in meinen Block select_payment eingegriffen hat gelöscht und schon geht alles wie gewünscht.

Danke nochmals für eure Hilfe. Das mit der Reihenfolge fand ich auch sehr interessant.

[QUOTE=mcdutch;142849]Was ist, wenn in der Reihenfolge für alles eine 1 angegeben ist. Wird dann alles überschrieben?[/QUOTE]
Dann entscheidet sozusagen der Zufall, irgendeine Reihenfolge gibt’s immer, mit smarty.block.parent wird dann der nächste Eintrag aufgerufen, wenn smarty.block.parent von einem Eintrag nicht aufgerufen wird ist an der Stelle Schluss.