Altes Zahlungsmittel-Modul macht Probleme

Ich habe ein Problem mit einem alten Modul, welches nicht von mir stammt.
Das Modul ändert den 3. Bestellschritt. Ich hab diesen schon mal versucht zu deaktivieren. Leider klappt dann in einigen Fällen der Bestellvorgang überhaupt nicht mehr. Deswegen ist dieser Bestellschritt seitdem auch immer aktiviert.

Nun habe ich ein neues Zahlungsmittel-Modul installiert und das Modul macht wieder Probleme. Diesmal ist das Problem, dass es das Zahlungsmodul (Klarna) daran hindert, dass es ein Fenster nach unten aufmacht, wo die Zahlungsdetails stehen. Irgendwas im Modul blockiert dies allerdings. Normalerweise hätte ich dabei an CSS Eigenschaften gedacht. Aber daran liegt es nicht (die CSS Datei, die in der ersten Zeile reingeladen wird, ist leer). Daher richtet sich jetzt mein Hauptaugenmerk an den folgenden Code:

[{oxstyle include=$oViewConf->getModuleUrl("hi_orderstep3", "src/styles/orderstep3.css")}]

[{*Disabled theese 2 scripts because necessary for additional info*}]
[{*oxscript include="js/widgets/oxpayment.js" priority=10 }]
[{oxscript add="$( '#payment' ).oxPayment();"*}]
[{oxscript include="js/widgets/oxinputvalidator.js" priority=10 }]
[{oxscript add="$('form.js-oxValidate').oxInputValidator();"}]
<form action="[{ $oViewConf->getSslSelfLink() }]" class="js-oxValidate payment" id="payment" name="order" method="post">
	<div>
		[{ $oViewConf->getHiddenSid() }]
		[{ $oViewConf->getNavFormParams() }]
		<input type="hidden" name="cl" value="[{ $oViewConf->getActiveClassName() }]">
		<input type="hidden" name="fnc" value="validatepayment">
	</div>

	[{if $oView->getPaymentList()}]
	<div class="orderlightBG">
	<p id="paymentHeader" class="blockHead">[{ oxmultilang ident="PAGE_CHECKOUT_PAYMENT_PAYMENT" }]</p>
		[{*<h3 id="paymentHeader" class="blockHead">[{ oxmultilang ident="PAGE_CHECKOUT_PAYMENT_PAYMENT" }]</h3>*}]
		[{ assign var="inptcounter" value="-1"}]
		[{foreach key=sPaymentID from=$oView->getPaymentList() item=paymentmethod name=PaymentSelect}]
			[{ assign var="inptcounter" value="`$inptcounter+1`"}]
			[{block name="select_payment"}]
				[{if $sPaymentID == "oxidcashondel"}]
					[{include file="page/checkout/inc/payment_oxidcashondel.tpl"}]
				[{elseif $sPaymentID == "oxidcreditcard"}]
					[{include file="page/checkout/inc/payment_oxidcreditcard.tpl"}]
				[{elseif $sPaymentID == "oxiddebitnote"}]
					[{include file="page/checkout/inc/payment_oxiddebitnote.tpl"}]
				[{elseif $sPaymentID == "oxidpaypal"}]
					[{include file="page/checkout/inc/payment_other.tpl"}]
				[{elseif $sPaymentID == "klarna_part"}]
					[{include file="page/checkout/inc/payment_other.tpl"}]
				[{elseif $sPaymentID == "klarna_spec"}]
					[{include file="page/checkout/inc/payment_other.tpl"}]
				[{elseif $sPaymentID == "klarna_invoice"}]
					[{include file="page/checkout/inc/payment_other.tpl"}]
				[{else}]
					[{include file="page/checkout/inc/payment_other.tpl"}]
				[{/if}]
			[{/block}]
		[{/foreach}]

		[{* TRUSTED SHOPS BEGIN *}]
		[{include file="page/checkout/inc/trustedshops.tpl"}]
		[{* TRUSTED SHOPS END *}]
	</div>
		[{block name="checkout_payment_nextstep"}]
			[{if $oView->isLowOrderPrice()}]
				<div class="lineBox clear">
				<div><b>[{ oxmultilang ident="PAGE_CHECKOUT_PAYMENT_MINORDERPRICE" }] [{ $oView->getMinOrderPrice() }] [{ $currency->sign }]</b></div>
				</div>
			[{else}]
				<div class="lineBox clear">
					<a href="[{ oxgetseourl ident=$oViewConf->getOrderLink() }]" class="prevStep submitButton largeButton" id="paymentBackStepBottom">[{ oxmultilang ident="PAGE_CHECKOUT_PAYMENT_BACKSTEP" }]</a>
					<button type="submit" name="userform" class="submitButton nextStep largeButton" id="paymentNextStepBottom">[{ oxmultilang ident="PAGE_CHECKOUT_PAYMENT_NEXTSTEP" }]</button>
				</div>
			[{/if}]
		[{/block}]

	[{elseif $oView->getEmptyPayment()}]
		[{block name="checkout_payment_nopaymentsfound"}]
			<div class="lineBlock"></div>
			<h3 id="paymentHeader" class="blockHead">[{ oxmultilang ident="PAGE_CHECKOUT_PAYMENT_INFO" }]</h3>
			[{ oxmultilang ident="PAGE_CHECKOUT_PAYMENT_EMPTY_TEXT" }]
			<input type="hidden" name="paymentid" value="oxempty">
			<div class="lineBox clear">
				<a href="[{ oxgetseourl ident=$oViewConf->getSelfLink()|cat:"cl=user" }]" class="prevStep submitButton largeButton">[{ oxmultilang ident="PAGE_CHECKOUT_PAYMENT_BACKSTEP" }]</a>
				<button type="submit" name="userform" class="submitButton nextStep largeButton" id="paymentNextStepBottom">[{ oxmultilang ident="PAGE_CHECKOUT_PAYMENT_NEXTSTEP" }]</button>
			</div>
		[{/block}]
	[{/if}]
</form>

Was davon könnte mein Zahlungsmodul davon abhalten, dass es darunter eine Forumularbox anzeigt?

Falls sich jemand nichts darunter vorstellen kann, so sollte es aussehen:

Das was unter Rechnung steht muss quasi runterklappen. Macht es allerdings nicht.

hmmm… ist es da nicht besser, sich an den modul-ersteller zu wenden?

Der Modulhersteller hat leider selbst nur gemeint, dass es wohl an CSS liegt.

Hab die Codezeile jetzt gefunden, die dafür verantwortlich ist.

Und zwar diese hier:

[{oxscript add="$( ‘#payment’ ).oxPayment();"*}

Jetzt muss ich nur noch entschlüsseln, was das macht

Lag irgendwie doch nicht an dieser Zeile :frowning:

Leider alles nicht so einfach, wie man sich das vorstellt.

ich glaube, es liegt am angepassten Template.
deaktiviere mal alle payment module und fang mit einem einzigen an. z.B: Klarna.
teste ob es funktioniert.

Es liegt an dem oben geposteten Modul. Wenn es deaktiviert ist, funktioniert es wie gewünscht. Ist es aktiviert, dann leider nicht. Das Modul ladet keinen CSS-Code rein.

Ich hab hier mal einen Screenshot gemacht. Links ist die funktionierende version, wo das Modul deaktiviert ist. Und rechts ist das Modul aktiviert.

Ich finde irgendwie gar keinen Ansatz, woran das liegen könnte.

Es gibt eine CSS-Klasse namens DD. Diese hat die Eigenschaft display: none. Wenn ich das ändere, dann wird mit der Klarna-Text zwar angezeigt, aber dann werden mir auch alle anderen Texte angezeigt und das ist nicht gewollt.

welches “oben gepostete Modul”?
wenn es einen Preis für vage unverständliche Beschreibungen gäbe, würdest du die ersten 20 Plätze besetzen. Du fängst mir “Ich habe ein Problem mit einem alten Modul, welches nicht von mir stammt.”, dann erwähnst du ein Zahlungsmodul, das nicht funktioniert. Dann installierst du Klarna, dann redest du von “mein Zahlungsmodul” (also ist es doch dein Modul?)… und ab da redest du nur noch von “das Modul”…

Ist “das Modul” der jüngere Bruder von “der Gerät”?
Bisschen Klartext bitte!

In meinem ersten Posting habe ich das Orderstep3-Modul gepostet. Dieses überschreibt die payment.tpl um die es hier geht.
Ich habe schon mal versucht das Orderstep3-Modul neu zu schreiben. Das hat mir dann aber aufgezeigt, dass da noch Punkte drinnen sind, die ich nicht einfach deaktiveren kann. Deshalb laufen beide Module, was nicht unbedingt schön ist und in so einem Problem wie jetzt dann auch für Verwirrung sorgt.

Um das Problem nochmals zu konkretisieren:

Ich habe eine Oxidinstallation in der ich die Zahlungsmethode Klarna einbauen möchte. Oxid hat ein angepasstes Theme. Klarna funktioniert soweit im normalen Theme und auch im Theme, wenn das Orderstep3-Modul deaktiviert wird.

Das heißt, dass im Orderstep3-Modul irgendetwas für den besagten Konflikt sorgt. Dieser Konflikt drückt sich dadurch aus, dass Klarna nicht in einem Aufklapp-Fenster anzeigt.

Stattdessen wird gar nichts angezeigt. Daher habe ich nun in meinem letzten Posting einmal den Quelltext mit dem Modul deaktiviert (links) und einmal mit dem Modul aktiviert gepostet.

Ich vermute das Modul das du “Orderstep3-Modul” nennst postet direkt an den Zahlungsanbieter, weil das aber nicht möglich ist mit den Blocks die Oxid vorgibt, schreibt es das javascript um was dazu führt dass die Auswahl mit den Checkboxen nicht mehr richtig funktioniert. Falls das so ist geht da ferndiagnosemässig schlecht etwas.

Ich hab jetzt nochmals genauer überschriebenen select_payment-Block mit dem im Original verglichen. Das Modul “Orderstep3” überschreibt nämlich den select-payment Block. Genauer gesagt ersetzt er nur den folgende Code:

  &lt;/div&gt;
    [{/block}]
[{/block}]
[{insert name="oxid_tracker" title=$template_title }]

</div>
[{/capture}]

[{include file=“layout/page.tpl” sidebar=“Left”}]

mit folgedendem Tag:

</form>

Deshalb stellen sich für mich jetzt 2 Fragen.

Frage Nr.1: Wenn das Modul deaktiviert ist, dann gibt es Probleme bei der Bestellung. Man kann dann in einigen Fällen nicht auf den “weiter zum nächsten Schritt” Button klicken. Kann es wirklich an diesen kleinen Änderungen liegen? Das sind ja nur ein paar Tags, die da geändert werden.

Frage Nr. 2: Mir kommt das etwas komisch vor, dass 2x geschlossene [{/block}] 's überschrieben werden. Was für Auswirkungen kann das haben?

Wie gesagt, ferndiagnosemässig ist das schwer. Das Problem was ich vermute ist folgendes: OXID hat für alle Zahlungsweisen ein einziges Formular, mit <form> ganz oben und </form> ganz unten. Manche Zahlungsmodule die direkt an den Anbieter posten wollen ersetzen das so dass jede Zahlungsweise ein eigenes Formular bekommt, um ihr eigenes Form action zu verwenden, und das funktioniert dann teilweise nicht mit anderen Modulen.

Frage Nr.1: Wenn das Modul deaktiviert ist, dann gibt es Probleme bei der Bestellung. Man kann dann in einigen Fällen nicht auf den “weiter zum nächsten Schritt” Button klicken. Kann es wirklich an diesen kleinen Änderungen liegen? Das sind ja nur ein paar Tags, die da geändert werden.

Wenn es mit deaktiviertem Modul zu Problemen kommt, kann es daran liegen dass du eine alte OXID-Version verwendest, bei der beim deaktivieren die zugehörigen Blocks manuell aus der Tabelle entfernt werden müssen.

Danke, das hilft mir denke ich jetzt weiter! Du hattest glaub ich sogar zuvor recht, als du da an Javascript gestoßen bist. Ich hab nämlich jetzt eine Zeile aus der Original-Payment hinzugefügt und jetzt ist da Problem mit der Zahlung gelöst.

Das alte Problem, dass man manchmal nicht bezahlen kann, wenn das Orderstep3-Modul deaktiviert ist, hast du in deinem letzten Posting ja quasi auch gelöst. Nämlich an dieser <form>-Geschichte. Danke dafür!

Was du auch immer probieren kannst ist die Reihenfolge der Block-Einbindung zu verändern, wenn zwei Module den gleichen Block überschreiben, das muss man direkt in der DB in oxtplblocks machen.

Und was ist, wenn es sehr viele Überschreibungen gibt?

Wie man auf dem Bild sieht, hab ich 8 Module, die die Datei überschreiben.

Derzeit habe ich das Problem, dass wenn ich die Stammdatei, ändere es gar nicht mehr geht. Dabei ändere ich nur ein <form>, wie es auch in dem Modul geändert wird. Daher nehme ich an, dass das Modul nochmals überschrieben wird. Nur, wenn es nur eine Reihenfolge gibt, wie geht er dann vor? Alphabetisch?