Materialien BestPrice-Order-Modul

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)
Standard: vertikal

progressWidth

Number

root

Breite des Diagramm-Balkens

ProgressLineWidth

Number

root

Linienbreite des Diagramm-Balkens
Standard: 1

ProgressLineColor

String <text|hex|rgb>

root

Linienfarbe des Diagramm-Balkens
Standard: black

progressFillColor

String <text|hex|rgb>

root

Hintergrundfarbe des Diagramm-Balkens
Standard: #007bff

fontType

String < type & size & font_name>

root

Typ, Größe und Schriftart
Standard: normal 7pt  Helvetica

TotalMount*

Number

root

Aktuelle Anzahl der bestellten Produkte

dataBar*

Array

root

Muss ein oder mehrere Objekte enthalten.
Siehe unten.

text*

String

dataBar[Obj]

Anzeige des Texts im Diagramm.
Nur die "Euro"-HTML-Entity ist ersetzbar, ansonsten muss der Uni-Code des Währungssymbols verwendet werden.

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.