Jump to content
xt:Commerce Community Forum

if abfrage von gesammt Warenkorb Preis


giller

Recommended Posts

Hallo

würde gerne die

{$cart_total}

mit einer if abfrage nutzen aber leider ist in der $cart_total ein string mit html Tags und deshalb funktioniert es wohl nicht hat jemand ein tip wie man das zb hinbekommkt.

{if $cart_total <= 60}

Versandt 4.90

{else}

Free

Link to comment
Share on other sites

hi,

dann stelle doch mal {debug} in die erste Zeile und Du siehst alle Variablen -> gerade gekuckt, nix verwertbares für Dich, also hol Dir die Werte aus der $_SESSION ( kannst Du Dir anzeigen lassen mit _SYSTEM_DEBUG = true in der xt_config ). Die Werte dort kann man mit etwas php-Kenntnissen leicht auslesen.

das geht etwa so:


{php}
$cart_total = $this->get_template_vars('cart');
// Als Zahl formatieren
// entferne vorderen String
$cart_total = str_replace('<span class="price"> ','',$cart_total);
// entferne hinteren String
$cart_total = str_replace(' €</span>','',$cart_total);
// entferne Tausender-Punkte
$cart_total = str_replace('.','',$cart_total);
// Ausgabe ans template
$this->assign('total',$cart_total);
{php}[/PHP]

Dann steht Dir die Variable {$total} als Zahlenwert zur Verfügung.

Ich habe das für eine Ausgabe a la "Sie haben für € 34,-- eingekauft. Ab € 60,-- ist die Lieferung frachtfrei, darunter entfallen Versandkosten in Höhe von € 4,90" benützt. Nehme an, Du willst was ähnliches.....

Grüsse

Link to comment
Share on other sites

Ja

odbear du verstehst mich.

und ich verstehe nicht warum die HTML Tag's mit span überhaubt mit in die cart_total mit eingebaut werden es wäre sonst ja zu leicht

Kann man nicht auch die [content_total] plain im Warenkorb verfügbar machen

so z.b.

{php}

$content_total = $this->get_template_vars('cart'); 

$this->assign('content_total',$content_total);

        {/php}  

-------------------------------------------------------------------------

Und dann so nutzen ?

{if $content_total.plain <= 60} 

    	<br />   	

    	<a href="{$shipping_link}" target="_blank" rel="nofollow">{txt key=TEXT_EXCL_SHIPPING}</a> (DE): 4,90 EUR<br />

    	{else}{if $content_total.plain > 60}  

    	    	<br /><strong><a href="{$shipping_link}" target="_blank" rel="nofollow">Versandkosten</a> (DE): FREI</strong><br />

    	{/if}{/if}

Danke :D

Link to comment
Share on other sites

hi, geht ein bisschen anders; Voraussetzung für mein Beispiel war ( sorry )

das der Wert 'cart' vorher mit assign zugewiesen wird, also so:

{assign var=cart value=$cart_total}.

Willst du das Array aus der $_SESSION holen, geht das so:

{php}

$content_total = $_SESSION['cart']->content_total;

$this->assign('content_total',$content_total}

{/php}

Grüsse

Link to comment
Share on other sites

Also Oldbear ich habe diese Tehma nicht vergessen bis jetzt bin ich aber noch nicht weiter gekommen habe nur eine weisse Site ereicht.

Was ich nicht verstehe ist das {$x-y-z.plain} im Exportmanager funktioniert

warum macht er mir im Warenkorb den {$cart_total} den nicht plain

das ich einfach {if $cart_total.plain <= 60} nutzen kann?

Mit freundliche Grüße Roger

Link to comment
Share on other sites

hi,

das liegt einfach daran, das $cart_total ein fertig aufbereiteter HTML-String ist und die Variante "plain" im Template einfach nicht zur Vefügung steht. Um damit zu rechnen, musst Du den erst in eine Zahl umwandeln oder Dir wie beschrieben den Wert aus der $_SESSION ziehen !

Probiers mal damit:

{assign var=cart value=$cart_total}
{php}
// holen der Variablen aus dem Template, ist formatiert mit Komma und Eurozeichen !
$cart_total = $this->get_template_vars('cart');
// Als Zahl formatieren
// entferne vorderen String
$cart_total = str_replace('<span class="price"> ','',$cart_total);
// entferne hinteren String
$cart_total = str_replace(' €</span>','',$cart_total);
// entferne Tausender-Punkte
$cart_total = str_replace('.','',$cart_total);
// tausche Komma gegen Punkt
$cart_total = str_replace(',','.',$cart_total);
// Ausgabe ans Template
$this->assign ('carttotal',$cart_total');
{/php}
[/PHP]

Jetzt steht Dir im Template $carttotal zum Rechnen zur Verfügung.

Wenn Du statt dem Euro-Zeichen "EUR" verwendest, musst Du das oben halt austauschen !

Grüsse

Link to comment
Share on other sites

So habe ich noch math hinzugefügt ich löse das bei mir übers Tamplate

da ich für jede Sprache eine Damain nutze sonst währ das woll nicht so elegant hast du noch ein tip wie ich vorher schon im {php} teil die Rechnung machen kann

{if $carttotal <= 60}


    	<br />   	

    	<a href="{$shipping_link}" target="_blank" rel="nofollow">{txt key=TEXT_EXCL_SHIPPING}</a> (DE): 4,90 EUR<br />

        <strong>Gesamtsumme: {math equation="x + y" x=$carttotal y='4.90'} EUR</strong>

    	{else}<br /><strong><a href="{$shipping_link}" target="_blank" rel="nofollow">Versandkosten</a> (DE): FREI</strong><br />

    	{/if}

MFG Roger

Link to comment
Share on other sites

Doch aber eigentlich könnte man ja schon im forfeld

hier rechnen aber php syntax habe ich kein plan von (nur ganzzzz wenig)

{assign var=cart value=$cart_total}

{php}

    // holen der Variablen aus dem Template, ist formatiert mit Komma und Eurozeichen !

    $cart_total = $this->get_template_vars('cart');

    // Als Zahl formatieren

    // entferne vorderen String

    $cart_total = str_replace('<span class="price"> ','',$cart_total);

    // entferne hinteren String

    $cart_total = str_replace(' EUR</span>','',$cart_total);

    // entferne Tausender-Punkte

    $cart_total = str_replace('.','',$cart_total);

    // tausche Komma gegen Punkt

    $cart_total = str_replace(',','.',$cart_total);

    // Ausgabe ans Template

        $this->assign ('carttotal',$cart_total);

        {/php}  

Link to comment
Share on other sites

kein Problem; sollte so gehen

// Ausgabe ans Template
if ( $carttotal < 60 ) {
$sum_total = $carttotal + 4.9;}
else {
$sum_total = $carttotal;}
$this->assign ('sumtotal',$sum_total);
$this->assign ('carttotal',$cart_total);
{/php}[/PHP]

Dann hast Du beide Werte

Grüsse

Link to comment
Share on other sites

gern geschehen...

ich hab gar kein php-Buch, sollte mir vielleicht doch mal eins kaufen :-)

Grüsse

Aber das nimmt kein Ende: dann noch ein javascript-Buch, ein smarty-Buch ( gibts sowas ? ) , ein css-Buch ( meine Schwachstelle :-),

weiss der Geier ( information-overflow ! ) ... irgendwie verlass ich mich einfach auf mein technisches Verständnis und die zig Programmiersprachen aus dem Altertum ( von algol68, fortran, basic, pascal, cobol - das hab ich geliebt ! - progress-db4 und was weiss ich ) für Grundlagenforschung bin ich einfach zu alt !

Link to comment
Share on other sites

So konte ja nicht abwarten aber jetzt gehe ich Schlafen

Ich glaub so ist es besser

 // Ausgabe ans Template

        if ( $cart_total < 60 ) {

             $sum_total = $cart_total + 4.9;}

        else {

             $sum_total = $cart_total ;}

        $this->assign ('sumtotal',$sum_total);

                {/php}  

Ansonten schreibt 4.9 da $carttotal noch leer ist auf jeden fall in {php}{/php} im Template nicht. $this->assign ('carttotal',$cart_total); carttotal fürs Tamplate $cart_total zum Rechnen noch in php Jetzt klapt es geil
{assign var=cart value=$cart_total}

{php}

    // holen der Variablen aus dem Template, ist formatiert mit Komma und Eurozeichen !

    $cart_total = $this->get_template_vars('cart');

    // Als Zahl formatieren

    // entferne vorderen String

    $cart_total = str_replace('<span class="price"> ','',$cart_total);

    // entferne hinteren String

    $cart_total = str_replace(' EUR</span>','',$cart_total);

    // entferne Tausender-Punkte

    $cart_total = str_replace('.','',$cart_total);

    // tausche Komma gegen Punkt

    $cart_total = str_replace(',','.',$cart_total);

    $this->assign ('carttotal',$cart_total);


    // Ausgabe ans Template

        if ( $cart_total < 60 ) {

             $sum_total = $cart_total + 4.9;}

        else {

             $sum_total = $cart_total ;}

        $this->assign ('sumtotal',$sum_total);

                {/php}  

Das war doch ein test ;) ? oder?

MFG Roger hier auf Facebook Viper Twin Turbo 1900PS

Link to comment
Share on other sites

  • 2 weeks later...

Hallo basttel jetzt ein bischen weiter


{assign var=cart value=$cart_total}

{php}

    // holen der Variablen aus dem Template, ist formatiert mit Komma und Eurozeichen !

    $cart_total = $this->get_template_vars('cart');

    // Als Zahl formatieren

    // entferne vorderen String

    $cart_total = str_replace('<span class="price"> ','',$cart_total);

    // entferne hinteren String

    $cart_total = str_replace(' EUR</span>','',$cart_total);

    // entferne Tausender-Punkte

    $cart_total = str_replace('.','',$cart_total);

    // tausche Komma gegen Punkt

    $cart_total = str_replace(',','.',$cart_total);

    $this->assign ('carttotal',$cart_total);


    // Ausgabe ans Template

        if ( $cart_total < 60 ) {

             $sum_total = $cart_total + 4.9;}

        else {

             $sum_total = $cart_total ;}

        $this->assign ('sumtotal',$sum_total);


$this->assign('myOptions', array(

                                11 => 'Deutschland',

                                12 => 'Europa',

                                13 => 'International')

                                );


{/php}

{html_options name=shippingcost options=$myOptions selected=$mySelect}

man sieht woll was es werden soll.

Habe jetzt volgendes Problem

Gibt es die möglichkeit eigene werte in den SESSION Cookie einzutragen???

Link to comment
Share on other sites

hi,

klar geht das, entweder normale Werte , in php einfach:

$_SESSION['myvar'] = $myvar;

oder in ein vorhandenes Objekt ( z.B. cart ):

{php}
// Beispiel für Lesen eines $_SESSION-OBJEKTS
$show_content = $_SESSION['cart']->show_content;

// Wegschreiben eines $_SESSION-OBJEKTS
$stime['4_XT']['products_shippingtime'] = 99;
$_SESSION['cart']->show_content = $stime;
{/php}[/PHP]

Grüsse

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...