Alternatives Template bei Rabatt & Orginalpreisanzeige

Hallo Leute,

ich weiß das die Frage schon gestellt wurde, jedoch gab es keine Antwort, die das Problem wirklich gelöst hat.

Wie kann man es hin bekommen, das bei einer Rabattaktion auf verschiedene Artikel vor den rabattierten Preis der Orginalpreis durchgestrichen angezeigt wird.
UVP ist [U]nicht[/U] die Lösung.

Wie kann man zu einer Rabattaktion ein alternatives Template darstellen lassen, anstatt details.tpl .

Ich denke da an einen Ausverkauf, bei dem alle betroffenen Artikel einen roten Hintergrund mit weißer Schrift bekommen.

Für das brauchst du kein alternatives Template. Das kannst du mit einer if-Abfrage beim Orginalpreis machen. Bevor du den anzeigst überprüfst du, ob bei diesem Artikel ein reduzierter Preis aktiviert ist. Falls ja, setzt du eine andere CSS-Klasse als normal. Kannst du in der detail.tpl machen. Ein fertiges Script kann ich dir aber nicht bieten.

Ich wäre da aber lieber flexibel, weil ich evtl. mehrmals Rabattaktionen laufen lassen will, bei denen dann unterschiedliche Templateänderungen erfolgen könnten.

Hättest du evtl. ein Beispiel zu der von dir genannten if Abfrage?

Hallo Leute,

ich habe nun meinen Code angepasst.

Also, wenn ich eine Rabattaktion starte wollte ich gerne, das er mir den Normalpreis anzeigt, damit man eben auch sieht, das sich bei dem Artikel etwas am Preis geändert hat.
Wenn ich einen UVP eingetragen hatte, hat mir der Shop trotz das die Rabattaktion noch nicht gestartet ist, den UVP und den aktuellen Preis angezeigt, obwohl diese gleich waren.

Also:

Statt 149,90 € (Unser regulärer Preis.)
jetzt nur
149,90 € inkl. MwSt., versandkostenfrei innerhalb Deutschlands

Um das abzufangen habe ich mir folgende Erweiterung ausgedacht.

Ich überprüfe in der details.tpl die Preise und nur bei einer Veränderung zeige ich den UVP an.
So gehe ich sicher, das vor und nach der Rabattaktion/Preisänderung kein UVP angezeigt wird (neuer Code FETT & KURSIV):

        [{if $product->getFTPrice() [B][I]&& ($product->getFTPrice() != $product->getFPrice())[/I][/B] }]
            <b class="old">[{ oxmultilang ident="DETAILS_REDUCEDFROM" }] <del>[{ $product->getFTPrice()}] [{ $currency->sign}]</del></b>
            <span class="desc">[{ oxmultilang ident="DETAILS_REDUCEDTEXT" }]</span><br>
            <sub class="only">[{ oxmultilang ident="DETAILS_NOWONLY" }]</sub>
        [{/if}]
        [{if $product->getFPrice() }]
            <div id="test_product_price">[{ $product->getFPrice() }] [{ $currency->sign}] 
        [{assign var="oCont" value=$oView->getContentByIdent("oxdeliveryinfo") }]
        <span class="dinfo">[{ oxmultilang ident="DETAILS_PLUSSHIPPING" }] [{ oxmultilang ident="DETAILS_PLUSSHIPPING2" }]</span>
        </div>
        [{/if}]

Danke für die Rückmeldung!

Kein Thema :slight_smile:

Geben ist seeliger denn Nehmen! :wink:

Kleine Anmerkung:

die Anzeige des UVP sollte nicht nur in der details.tpl angepasst werden, sondern auch in der[B] inc/products.tpl[/B] .

Die details_persparam.tpl gibt es ja glaube ich in den neueren Versionen nicht mehr. Dort steckt es auch noch.

CYA

Ich hab das auch so ähnlich wie du.

Ich mach aber zusätzlich noch eine Abfrage auf die Staffelpreise. Gibt es Staffelpreise die teurer sind als der rabattierte Preis? -> Wenn ja, dann blende diese aus.

Denn ich finde es ein bisschen blöd wenn Staffelpreise angezeigt werden die dann teurer sind als der Angebotspreis. :slight_smile:

LG Carolin

Manchmal bin ich richtig froh, dass ich es schaffe ohne so ein Kram wie Varianten, Staffelpreise, ebay , ShoppingClubs und so auskomme. :wink:

Wobei ich es schon blöd finde, wenn der Kunde eine unnütze Info wie UVP=VK erhält, wenn dann Staffelpreise noch höher sind ist natürlich verheerend.

CYA

Wirkt einfach unprofessionell und verwirrend auf den Kunden…

Sieht dann vom Aufbau nämlich in etwa so aus:

[B]Statt 31,90 €[/B] (Unser regulärer Preis.)
[B]jetzt nur 26,90 € [/B]

[B]Mengenstaffelpreise:[/B]
ab 2 Stück - [B]28,95 €[/B]

Und was soll der Kunde nun denken? Er kauft einen Artikel für 26,90 € und 2 für 28,95 €? :slight_smile:

Hallo Leute,

in meiner vorigen Änderung habe ich den UVP angezeigt, wenn er ungleich dem aktuellen Preis ist.
Richtig wäre aber, den UVP nur anzuzeigen, wenn er höher als der aktuelle Preis ist.

Um das abzufangen habe ich den Quelltext in der details.tpl ,wie folgt bearbeitet (neuer Code FETT & KURSIV):[/QUOTE]

[{if $product->getFTPrice() && (number_format($product->getFTPrice(), 2, ‘.’, ‘’) > number_format($product->getFPrice(), 2, ‘.’, ‘’)) }]
<b class=“old”>[{ oxmultilang ident=“DETAILS_REDUCEDFROM” }] <del>[{ $product->getFTPrice()}] [{ $currency->sign}]</del></b>
<span class=“desc”>[{ oxmultilang ident=“DETAILS_REDUCEDTEXT” }]</span><br>
<sub class=“only”>[{ oxmultilang ident=“DETAILS_NOWONLY” }]</sub>
[{/if}]
[{if $product->getFPrice() }]
<div id=“test_product_price”>[{ $product->getFPrice() }] [{ $currency->sign}]
[{assign var=“oCont” value=$oView->getContentByIdent(“oxdeliveryinfo”) }]
<span class=“dinfo”>[{ oxmultilang ident=“DETAILS_PLUSSHIPPING” }] [{ oxmultilang ident=“DETAILS_PLUSSHIPPING2” }]</span>
</div>
[{/if}]

Da die get(XYZ)Price() Methoden einen ins Deutsche formatierten Preis ausgeben, mit einem Komma, kann der Preis nicht sauber Verglichen werden, daher wird mit number_format das Komma für die Nachkommastellen mit einem Punkt ersetzt um sauber vergleichen zu können.

[QUOTE=Carolin;37407]Wirkt einfach unprofessionell und verwirrend auf den Kunden…

Sieht dann vom Aufbau nämlich in etwa so aus:

[B]Statt 31,90 €[/B] (Unser regulärer Preis.)
[B]jetzt nur 26,90 € [/B]

[B]Mengenstaffelpreise:[/B]
ab 2 Stück - [B]28,95 €[/B]

Und was soll der Kunde nun denken? Er kauft einen Artikel für 26,90 € und 2 für 28,95 €? :)[/QUOTE]

Carolin für dich habe ich derzeit leider keine Lösung, werde mir aber bei Gelegenheit die Sache nochmal anschauen :wink:

[QUOTE=karatag;47050]Hallo Leute,
Da die get(XYZ)Price() Methoden einen ins Deutsche formatierten Preis ausgeben, mit einem Komma, kann der Preis nicht sauber Verglichen werden, daher wird mit number_format das Komma für die Nachkommastellen mit einem Punkt ersetzt um sauber vergleichen zu können.[/QUOTE]

Dies klappte aber nicht bei Beträgen über 1000 EUro, weil die o.g. Methode bei Tausender Beträgen ein Punkt einfügt um Tausender zu separieren (1.000,00)

daher folgende Erweiterung

number_format(preg_replace(‘/(.)/’, ‘’, $product->getFTPrice()), 2, ‘.’, ‘’)

Es werden also vor dem Umwandeln der Komma zum Punkt, alle vorhandenen Punkt-Zeichen entfernt (1.000,00 => 1000,00)

Hallo karatag,

danke! Das ist ja ein Tutorial wert. Ich hab’s hier mit aufgenommen:
http://wiki.oxidforge.org/Tutorial_Ideas

Gruß

Es werden also vor dem Umwandeln der Komma zum Punkt, alle vorhandenen Punkt-Zeichen entfernt (1.000,00 => 1000,00)

Das selbe muss auch für den aktuell errechneten Preis umgewandelt werden letztendlich sieht es dann so aus

[{if $product->getFTPrice() && (number_format(preg_replace(‘/(.)/’, ‘’, $product->getFTPrice()), 2, ‘.’, ‘’) > number_format(preg_replace(‘/(.)/’, ‘’, preg_replace(‘/(ab.)/’, ‘’, strip_tags($product->getFPrice()))), 2, ‘.’, ‘’)) }]
<b class=“old”>[{ oxmultilang ident=“DETAILS_REDUCEDFROM” }] <del>[{ $product->getFTPrice()}] [{ $currency->sign}]</del></b>
<span class=“desc”>[{ oxmultilang ident=“DETAILS_REDUCEDTEXT” }]</span><br>
<sub class=“only”>[{ oxmultilang ident=“DETAILS_NOWONLY” }]</sub>
[{/if}]
[{if $product->getFPrice() }]
<div id=“test_product_price”>[{ $product->getFPrice() }] [{ $currency->sign}]
[{assign var=“oCont” value=$oView->getContentByIdent(“oxdeliveryinfo”) }]
<span class=“dinfo”>[{ oxmultilang ident=“DETAILS_PLUSSHIPPING” }] [{ oxmultilang ident=“DETAILS_PLUSSHIPPING2” }]</span>
</div>
[{/if}]

Jetzt hab ich nochmal 2 kleine Fragen dazu. Ich möchte das bestimmte Kunden nach dem einloggen 10% Rabatt angezeigt bekommen auf die Produkte die ich dafür vorgesehen habe.

Es funktioniert also nur wenn ich einen UVP Eingebe. Dann kommt allerdings die Meldung

“Warnung: UVP muss größer als normaler Preis sein!”

Das kann man ja dann wohl ignorieren, es wird nun nach dem einloggen der UVP angezeigt und dann der rabattierte Preis. Soweit so gut.

Jetzt kommt das größere Problem. Ich möchte gerne das der gewährte Rabatt in der Rechnung angezeigt wird. Also so in der Art:

“abzgl. 10% = XX.XX EUR”

Könnte man das auch irgendwie anzeigen lassen?

Grüße

Also ich hab die Änderung jetzt drin. Funktioniert soweit, dass alte Preise (in UVP eingetragen) nun angezeigt werden, wenn sie größer sind, als der aktuelle.

Nur leider funktioniert es bei mir NICHT bei Rabattaktionen mit PROZENTPREISEN also % nicht abs!
Hier wird weiterhin nur der rabattierte Preis angezeigt. Kein Originalpreis.

Bei abs Angaben im Rabatt geht es ohne Probleme.

Hallo zusammen,

kurze Frage zu der UVP-Änderung; wenn der reguläre Preis höher als der UVP ist wird bei mir der Part Statt xx,xx€ jetzt nur ausgeblendet aber es gelingt mir nicht das “Sie sparen xx% / x€” verschwinden zu lassen. Hat vielleicht jemand nen Tipp was ich ändern muß?

[{if $product->getFTPrice() && (number_format(preg_replace('/(\.)/', '', $product->getFTPrice()), 2, '.', '') > number_format(preg_replace('/(\.)/', '', preg_replace('/(ab.)/', '', strip_tags($product->getFPrice()))), 2, '.', '')) }]
                <span class="old">[{ oxmultilang ident="DETAILS_REDUCEDFROM" }] <del><b>[{ $product->getFTPrice()}] [{ $currency->sign}]</b></del></span>
                <!-- <span class="desc">[{ oxmultilang ident="DETAILS_REDUCEDTEXT" }]</span> -->
                <sub class="only">[{ oxmultilang ident="DETAILS_NOWONLY" }]</sub>
            [{/if}]
            [{if $product->getFPrice() }]
                <strong class="price pricerange" id="test_product_price"><font style="color:#f02221;">[{ $product->getFPrice() }] [{ $currency->sign}]</font></strong>
            [{/if}]
              
             [{if $product->getFTPrice() }]
            <b>[{ if $product->oxarticles__oxtprice->value > 0 }]Sie sparen <font style="color:#f02221;">[{assign var="uvp" value=$product->oxarticles__oxtprice->value }][{assign var="price" value=$product->oxarticles__oxprice->value }][{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%[{/if}]</b></font> / <font style="color:#f02221;"><b>[{math assign="ox_price" equation="( x - y)" x=$uvp y=$price }][{ $ox_price|number_format:"2.Of"}] €</b></font>
             [{/if}]

Herzlichen Dank.

Gruß
Thomas

Ändere die unteren 3 Zeilen

von

[{if $product->getFTPrice() }]
<b>[{ if $product->oxarticles__oxtprice->value > 0 }]Sie sparen <font style="color:#f02221;">[{assign var="uvp" value=$product->oxarticles__oxtprice->value }][{assign var="price" value=$product->oxarticles__oxprice->value }][{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%[{/if}]</b></font> / <font style="color:#f02221;"><b>[{math assign="ox_price" equation="( x - y)" x=$uvp y=$price }][{ $ox_price|number_format:"2.Of"}] €</b></font>
[{/if}]  

zu

[{if $product->getFTPrice() && (number_format(preg_replace('/(\.)/', '', $product->getFTPrice()), 2, '.', '') > number_format(preg_replace('/(\.)/', '', preg_replace('/(ab.)/', '', strip_tags($product->getFPrice()))), 2, '.', '')) }]
<b>[{ if $product->oxarticles__oxtprice->value > 0 }]Sie sparen <font style="color:#f02221;">[{assign var="uvp" value=$product->oxarticles__oxtprice->value }][{assign var="price" value=$product->oxarticles__oxprice->value }][{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%[{/if}]</b></font> / <font style="color:#f02221;"><b>[{math assign="ox_price" equation="( x - y)" x=$uvp y=$price }][{ $ox_price|number_format:"2.Of"}] €</b></font>
[{/if}] 

Ich hab es nicht ausprobiert, sollte aber klappen :wink:

hui,

das ging nicht nur richtig flott sondern funktioniert auch hervorragend :slight_smile:
ich danke dir herzlich