Hier stellen wir Ihnen ein Beispiel-Template für die Bestellfunktion des BestPrice-Order-Moduls zur Verfügung. Passen Sie dieses an Ihr Shop-Design an und beachten Sie die untenstehende Tabelle, um die Anzeige des Preisstaffel-Diagramms zu konfigurieren.
Wegweiser: BestPrice-Order-Modul
Referenz: E-BP-Tags
Hinweise zur Integration
HTML-Integration
Dieses Plugin wurde im Framework Solid.js geschrieben und nutzt das HTML-Element canvas, um das Diagramm darzustellen. Daher ist es notwendig, ein canvas-Element im Template einzubinden.
Die Höhe und Breite des canvas-Elements wird durch das JavaScript-Modul berechnet und ersetzt.
Die Berechnung der Höhe und Breite ist abhängig vom Style des Parents-Elements.
JavaScript Integration
Es besteht aus zwei Script-Tags:
▪JavaScript-Modul ws-best_price_modul_1.0.0.js
▪Konfiguration und Ausführung des JavaScript-Moduls
Beispiel-Template
<html>
<head>
<!--Head Elements-->
</head>
<body>
{WS-Include}
<script src="/$WS/ws_sysdata/js/ws-best_price_modul_1.0.0.js"></script>
<script type="text/javascript">
function ws_AJAXloadProductStart(){}
function ws_AJAXloadProductError(){}
function ws_AJAXloadProductResponseSuccess(){}
function ws_AJAXloadProductResponseError(){}
function reloadinfos(value) {
~WS-DisableAmpersandLinkEncoding~
ws_AJAXloadTemplate("~PR-Link($PR-ProdIndex$)~&amount=" +value, '~WS-Charset~', ws_AJAXloadProductStart, ws_AJAXloadProductError, 'ws_AJAXloadProductResponseSuccess()', 'ws_AJAXloadProductResponseError()');
~WS-EnableAmpersandLinkEncoding~
return true;
}
</script>
<h2>Bestpricemodul</h2>
<div>Startet: ~E-BP_Begin~</div>
<div>Endet: ~E-BP_End~</div>
<div style="margin-top: 50px">
<!-- Prüfung auf diverse Situationen -->
{E-BP_LOGGED-IN}<div>Ich bin gerade angemeldet</div>{/E-BP_LOGGED-IN}
{!E-BP_LOGGED-IN}<div>Ich bin gerade <strong>NICHT</strong> angemeldet</div>{/!E-BP_LOGGED-IN}
{E-BP_HAS-ADDRESS}<div>Ich habe eine Rechnungsadresse</div>{/E-BP_HAS-ADDRESS}
{E-BP_HAS-DELIVERY-ADDRESS}<div>Ich habe eine Lieferadresse</div>{/E-BP_HAS-DELIVERY-ADDRESS}
{E-BP_ACTIVE}<div>Diese Kampagne ist aktiv</div>{/E-BP_ACTIVE}
{E-BP_BEFORE-BEGIN}<div>Diese Kampagne ist noch nicht aktiv</div>{/E-BP_BEFORE-BEGIN}
{E-BP_FINISHED}<div>Diese Kampagne ist schon beendet</div>{/E-BP_FINISHED}
{E-BP_Error}<div style="color:red">~E-BP_Error~</div>{/E-BP_Error}
</div>
<!-- Anzeige des Diagramms -->
<div id="canvasContainer" style="height: 250px">
<canvas id="bulk"></canvas>
</div>
<script>
function runCanvas() {
var canvasElement = document.getElementById('bulk');
var newCanvas = newBulkBestPrice(canvasElement,{
barType:'horizontal',
progressWidth:20,
progressLineWidth:2,
progressLineColor:'black',
progressFillColor:'#6dfa36',
fontType:'normal 7pt Helvetica',
dataBar: [
~DC-Counter1_reset~
{@E-BP_PriceList}
~DC-Counter1_inc~
{!DC-Counter1(1)},
{/!DC-Counter1(1)}
{
text:'~E-BP_PriceList-Price~ \u20AC',
countStand: ~E-BP_PriceList-Amount~
}
{/@E-BP_PriceList}
],
totalMount: ~E-BP_TotalAmount~
});
}
// run on page load
runCanvas();
// run on resize of the window
window.addEventListener('resize',runCanvas);
</script>
<!-- Schritt 1: Auswahl der Variante und Menge -->
{E-BP_CAMPAIGN}
<h3>Kampagne - ~E-BP_BasicPrice~</h3>
<form action="~FORM-Template(ws_product.htm)~" method="Post" name="product">
<div>Aktueller Preis: {E-BP_CurrentPrice}~E-BP_CurrentPrice_Format~{/E-BP_CurrentPrice}{!E-BP_CurrentPrice}~PR-OrgPrice~ ~WS-CurrencySymbol~ {/!E-BP_CurrentPrice}</div>
<div>Aktuell schon bestellte Produkte: ~E-BP_TotalAmount_Format~</div>
<!-- Anzeige der Preisstaffel -->
<div style="margin-top: 50px">
<div>Preisstaffel:</div>
<div style="padding-left: 50px">
{@E-BP_PriceList}
<div>~E-BP_PriceList-Amount~ Stück: ~E-BP_PriceList-Price_Format~ ~WS-CurrencySymbol~</div>
{/@E-BP_PriceList}
</div>
</div>
<input type="hidden" name="wsbp_act" value="show_summary">
<input type="hidden" name="pi" value="~PR-ProdIndex~">
<div style="margin-top: 50px">
<input type="text" name="amount" value="{E-BP_Amount}~E-BP_Amount~{/E-BP_Amount}" onblur="reloadinfos(this.value)"/>
{E-BP_ACTIVE}
<input type="submit" value="Bestellen">
{/E-BP_ACTIVE}
</div>
</form>
{/E-BP_CAMPAIGN}
<!-- Schritt 2: Auswahl der Lieferadresse und Bestätigung der Bestellung-->
{E-BP_SUMMARY}
<h3>Summary</h3>
<form action="~FORM-Template(ws_product.htm)~" method="Post" name="product">
<!-- Wichtige Hiddenfelder -->
<!-- Aktion -->
<input type="hidden" name="wsbp_act" value="preorder">
<!-- Produktindex -->
<input type="hidden" name="pi" value="~PR-ProdIndex~">
<!-- Anzahl, die Bestellt werden soll -->
<input type="hidden" name="amount" value="~E-BP_Amount~" />
<!-- Eine OrderID um Doppelbestellungen zu vermeiden -->
<input type="text" name="orderid" value="~E-BP_OrderId~" >
<!-- Anzeige der Rechnungsadresse -->
<p style="margin-top: 50px">
<div>
<input type="radio" name="use_delivery_address" value="no" {!E-BP_HAS-DELIVERY-ADDRESS}checked{/!E-BP_HAS-DELIVERY-ADDRESS}> Liefere an Rechnungsadresse:
</div>
<!-- Anzeige von Informationen der Rechnungsadresse -->
{E-BP_BillingAddress}
<div>
Vorname:
~E-BP_Address-Firstname~
</div>
<div>
Nachname :
~E-BP_Address-Lastname~
</div>
{/E-BP_BillingAddress}
</p>
<!-- Anzeige von Informationen der Lieferadresse -->
{E-BP_HAS-DELIVERY-ADDRESS}
<p>
<div>
<input type="radio" name="use_delivery_address" value="yes" checked> Liefere an Lieferadresse:
</div>
{E-BP_DeliveryAddress}
<div>
Vorname:
~E-BP_Address-Firstname~
</div>
<div>
Nachname :
~E-BP_Address-Lastname~
</div>
{/E-BP_DeliveryAddress}
</p>
{/E-BP_HAS-DELIVERY-ADDRESS}
<div style="margin-top: 50px">
<div>
Gewählte Menge: ~E-BP_Amount~
</div>
<!-- Pflicht: User muss eine Confirm-Checkbox anwählen, damit die Bestellung ausgeführt werden kann -->
<input type="hidden" name="confirm" value="yes">
<input type="submit" value="Bestellen">
</div>
</form>
{/E-BP_SUMMARY}
<!-- Schritt 3: Bestellbestätigung -->
{E-BP_CONFIRM}
<h3>Bestätigung</h3>
<p>Danke für die Bestellung!<p>
<div>Aktueller Preis: {E-BP_CurrentPrice}~E-BP_CurrentPrice~{/E-BP_CurrentPrice}{!E-BP_CurrentPrice}~PR-OrgPrice~ ~WS-CurrencySymbol~ {/!E-BP_CurrentPrice}</div>
<div>Aktuell schon bestelle Produkte: ~E-BP_TotalAmount~</div>
<div>Ihre Bestellmenge: ~E-BP_Amount~</div>
<p style="background-color:#00FF00">
Sobald die Kampagne abgelaufen ist bekommen Sie eine E-Mail bezüglich der finalen Bestellung.
Sie können auch in ihrem Kundenkonto alle Laufende Kampagnen, zu denen Sie Vorbestellungen getätigt haben, noch einmal ansehen.
</p>
{/E-BP_CONFIRM}
<!-- Zusammenfassung aller Reservierungen von aktiven Kampagnen des Kunden -->
<div id="zusammenfassung_bestprice">
{ST-Ajax}<WS-Ajax-zusammenfassung_bestprice>{/ST-Ajax}
<p>
<table style="border-spacing: 10px;border-collapse: separate;margin-top: 50px;">
<tr>
<td>Listenpreis</td>
<td>Bestellpreis</td>
<td>Ersparnis</td>
<td>Gesamtersparnis</td>
</tr>
<tr>
<td>~E-BP_BasicPrice_format~</td>
<td>~E-BP_CurrentPrice_format~</td>
<td>~E-BP_CurrentSaving_format~</td>
<td>~E-BP_TotalSaving_format~</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>Preis:</td>
<td>~E-BP_TotalPrice_format~</td>
</tr>
</table>
</p>
<p style=";margin-top: 50px;">
<div style="font-weight:bold">Reservierungen</div>
<table style="border-spacing: 10px;border-collapse: separate;">
<tr style="font-weight: bold">
<td>Produkt</td>
<td>Menge</td>
<td>Aktueller Stückpreis</td>
<td>Aktueller Gesamtpreis</td>
<td>Aktuelle Ersparnis (pro Stück)</td>
<td>Aktuelle Gesamtersparnis</td>
</tr>
{@E-BP_Orders}
{NO_PARSING}{PR-AdvData({/NO_PARSING}~E-BP_ProdIndex~{NO_PARSING})}{/NO_PARSING}
<tr>
<td>~E-BP_Name~</td>
<td>~E-BP_Amount~</td>
<td>
{E-BP_CurrentPrice}~E-BP_CurrentPrice_format~{/E-BP_CurrentPrice}{!E-BP_CurrentPrice}~PR-OrgPrice~{/!E-BP_CurrentPrice}~WS-CurrencySymbol~
</td>
<td>~E-BP_TotalPrice_format~ ~WS-CurrencySymbol~</td>
<td>~E-BP_CurrentSaving_format~ ~WS-CurrencySymbol~ </td>
<td>~E-BP_TotalSaving_format~ ~WS-CurrencySymbol~</td>
</tr>
{NO_PARSING}{/PR-AdvData({/NO_PARSING}~E-BP_ProdIndex~{NO_PARSING})}{/NO_PARSING}
{/@E-BP_Orders}
</table>
<div style="padding: 10px; padding-bottom: 0px; border-top: 1px solid black">
Gesamtpreis aller Reservierungen: ~E-BP_CompletePrice_format~ ~WS-CurrencySymbol~</div>
<div style="padding: 10px">
Gesamtersparnis aller Reservierungen: ~E-BP_CompleteSaving_format~ ~WS-CurrencySymbol~
</div>
<div style="padding: 10px; padding-bottom: 0px; border-top: 1px solid black">
Gesamtpreis aller Reservierungen + aktueller Reserviervorgang: ~E-BP_NewCompletePrice_format~ ~WS-CurrencySymbol~
</div>
<div style="padding: 10px">
Gesamtersparnis aller Reservierungen + aktueller Reserviervorgang: ~E-BP_NewCompleteSaving_format~ ~WS-CurrencySymbol~
</div>
{ST-Ajax}</WS-Ajax-zusammenfassung_bestprice>{/ST-Ajax}
</div>
</table>
</p>
{/WS-Include}
</body>
</html>
Konfiguration des Preisstaffel-Diagramms
Name |
Type |
Parent |
Beschreibung |
barType |
String <horizontal|vertical> |
root |
Anzeige des Diagramm-Balkens (horizontal oder vertikal) |
progressWidth |
Number |
root |
Breite des Diagramm-Balkens |
ProgressLineWidth |
Number |
root |
Linienbreite des Diagramm-Balkens |
ProgressLineColor |
String <text|hex|rgb> |
root |
Linienfarbe des Diagramm-Balkens |
progressFillColor |
String <text|hex|rgb> |
root |
Hintergrundfarbe des Diagramm-Balkens |
fontType |
String < type & size & font_name> |
root |
Typ, Größe und Schriftart |
TotalMount* |
Number |
root |
Aktuelle Anzahl der bestellten Produkte |
dataBar* |
Array |
root |
Muss ein oder mehrere Objekte enthalten. |
text* |
String |
dataBar[Obj] |
Anzeige des Texts im Diagramm. |
countStand |
Number |
dataBar[Obj] |
Positionierung und Anzeige der Menge und des zugehörigen Preises im Diagramm. |
Parameter mit Sternchen * sind notwendig. Alle anderen Parameter sind optional.