Product Info / Artikel mit Attribut / Preis über 1000 EUR / Javascript Fehler ->Fix

  • Hallo,

    also ich nochmals. :)

    Es gibt tats. einen Bug, ist auf der Demo Version v21plus zu sehen.

    1 Bug) Man wählt den Kühlschrank (Product mit Option) und Bingo: Javascript Fehler-> original_price undefined.
    2 Bug) Wenn der Preis des Artikel <1000 € original_price ist kein "zahl" mehr, sondern etwas wie 1,000.00.

    Lösung:
    1 Bug) Der Aufruf der Funktion

    Code
    updatePrice();

    von der product_options_xxx.html (wobei xxx alle Option-Templates bedeutet)

    zu der product_info_v1.html innerhalb des Javascript bewegt :

    Code
    <script type="text/javascript">
    original_price = .....
    document.write....
    updatePrice();/AUFRUF DER FUNKTION
    </script>

    2 Bug) Ok, jetzt wird es Rock 'n Roll....
    In der modules/product_info.php gibt es bei Linie ca 48 einen seltsamen Aufruf:

    Code
    $products_price_j = number_format($products_price_without_separator,2);


    Wieso auch immer, den Sinn habe ich nicht nachvollziehen können...(vielleicht weisst jemand mehr darüber) weil die php Funktion "formatiert" die Zahl mit dezimal und tausender Trenner! Un da ist der Hacken.
    Also...auskommentieren.

    Code
    //$products_price_j = number_format($products_price_without_separator,2);


    Dieser $product_price_j wird später benutzt um die Javascript Variable zu befüllen.

    Code
    $info_smarty->assign('PRODUCTS_PRICE_J', $products_price_j);

    Dann unter :

    Code
    if(PRICE_AS_IMAGE == 'true') {
    		$price = $products_price;
    	} else {
    		$price = $products_price['formated'];
    	}

    mit

    Code
    $price_plain = $products_price['plain']; // NEW

    anfügen.

    ....mehr in Teil 2.

    Einmal editiert, zuletzt von julien (30. Juli 2011 um 15:14)

  • ...

    Bei ca Linie 98/100:

    Code
    $info_smarty->assign('PRODUCTS_PRICE_J', $products_price_j);
    // ATTRIBUTES_PRICES_JAVASCRIPT by xtc-deluxe.de
    $info_smarty->assign('PRODUCTS_PRICE_PLAIN', $products_price_j);


    auskommentieren/ersetzen.

    Code
    //$info_smarty->assign('PRODUCTS_PRICE_J', $products_price_j);// AUSKOMMENTIERT
    // ATTRIBUTES_PRICES_JAVASCRIPT by xtc-deluxe.de
    $info_smarty->assign('PRODUCTS_PRICE_PLAIN', $price_plain); // NEUE WERT

    und in der zB. product_info_v1.html

    Code
    <script type="text/javascript">
    original_price = {$PRODUCTS_PRICE_PLAIN};
    document.write('<strong>{$SYMBOL_LEFT} <span id="price">{$PRODUCTS_PRICE_PLAIN}</span> {$SYMBOL_RIGHT}</strong><br /><em class="fs85">({$SYMBOL_LEFT}{$PRODUCTS_PRICE_J} {$SYMBOL_RIGHT})</em><br />');
    </script>

    mit

    Code
    <script type="text/javascript">
    original_price = {$PRODUCTS_PRICE_PLAIN};
    document.write('<strong><span id="price">{$PRODUCTS_PRICE}</span></strong><br /><em class="fs85">({$PRODUCTS_PRICE})</em><br />');
    updatePrice();
    </script>

    ersetzen.

    Ok, damit sollte es behoben werden.

    Bonus Track:
    In der product_attributes.php folgendes addieren:

    Code
    $module_smarty->assign('SYMBOL_LEFT',$xtPrice->currencies[$xtPrice->actualCurr]['symbol_left']);
    $module_smarty->assign('SYMBOL_RIGHT',$xtPrice->currencies[$xtPrice->actualCurr]['symbol_right']);
    $module_smarty->assign('TEXT_PRICE_INCL_OPTIONS',YOUR_PRICE);


    Und dann bei Zeile ca 44 von der product_options_selection.html ändern in.

    Code
    document.getElementById("price").firstChild.nodeValue = '{$TEXT_PRICE_INCL_OPTIONS}'+'{$SYMBOL_LEFT} '+currencyToXTC(calculated_price)+' {$SYMBOL_RIGHT}';


    Damit der Kunde der Angezeigter Preis versteht.
    -----
    Wenn ihr das addiert, sieht ihr auch dass einen smarty Variablen Block bei jeden Option Aufruf definiert wird.
    Einfach ausserhalb des Loops bewegen:

    Code
    #$products_options_data[$row]['DATA'][$col] = array ('ID' => $products_options['products_options_values_id'], 'TEXT' => $products_options['products_options_values_name'], 'MODEL' => $products_options['attributes_model'], 'PRICE' => $xtPrice->xtcFormat($price, true), 'FULL_PRICE' => $xtPrice->xtcFormat($full, true), 'PREFIX' => $products_options['price_prefix'], 'PRICE_PLAIN' => $price);
    $module_smarty->assign('DECIMAL_PLACES',$xtPrice->currencies[$xtPrice->actualCurr]['decimal_places']);
    $module_smarty->assign('THOUSANDS_POINT',$xtPrice->currencies[$xtPrice->actualCurr]['thousands_point']);
    $module_smarty->assign('DECIMAL_POINT',$xtPrice->currencies[$xtPrice->actualCurr]['decimal_point']);
    $module_smarty->assign('SYMBOL_LEFT',$xtPrice->currencies[$xtPrice->actualCurr]['symbol_left']);
    $module_smarty->assign('SYMBOL_RIGHT',$xtPrice->currencies[$xtPrice->actualCurr]['symbol_right']);
    $module_smarty->assign('TEXT_PRICE_INCL_OPTIONS',YOUR_PRICE);

    bis vor:

    Code
    }
    if ($product->data['options_template'] == '' or $product->data['options_template'] == 'default') {

    2 Mal editiert, zuletzt von julien (30. Juli 2011 um 15:21)

  • Hallo julien, auch hier tolle Arbeit, ABER ich habe eine deutlich bessere Variante im QF3 eingesetzt. Die Attributpreis update Funktion läuft jetzt sauber, inkl. Sonderspreise und Staffelpreise. Das ging alles nicht korrekt. Deshalb ist das QF3 auch etwas umfangreicher! Hier werden dann auch die product_info Dateien ausgetauscht. Jeder, der schon Anpassungen gemacht hat, SOLLTE UNBEDINGT eine komplette Sicherung machen und die Dateien EINZELN per Notepad++ vergleichen! :)

    <p>Wir geben nur Anregungen und Hilfestellung auf Basis unserer Erfahrung, keine Rechtshilfe!<br>\m/('_')\m/</p>

  • HE sitze auf den SCHIRM ;)
    Wen Du noch den Abrundungstip geben könnte aus den mail?

    Und gehst du zum Holland , nein besser nicht die haben momentan nicht viel geduld ;)

  • OK demo gesehen.

    Ist fix von Julien drin beim Suche, aber dan könnte mann nicht mehr gleich mit einer klick auf dass bild auswählen oder ?

  • Hallo Jo,

    FF 3.6 ?? Du bist lustig! Mittlerweile ist 5.0 Standart und morgen kommt die 6.0 Version.
    :)
    Spass bei Seite, lade dir den Firebug plugin und somit bekommst du einen besseren Einblick in der HTML/JS.

    Meine Plugins Tipps unter FF:
    FireBug und Web Developper -> zeigen alle JS und CSS Fehler und viel-viel mehr (css highlighter, DOM...)
    HTML Validator -> Zeigt alle HTML compliancy Fehler
    KGEN -> Zeigt dir deine Seite wie eine Suchmaschine sie auch liest, Keyword relevanz und so weiter. Sehr Gut zum Optimieren!!
    UserAgentSwitcher -> wenn Du mal die Mobile Version debuggen/probieren möchtest.

    Julien.

  • Yep aber ist auf andere Rechner , wegen veraltete plugins auf dieser noch 3.6
    Und Ja Mobile version habe ich mal kurz mit einer plugin Iphone sample oder so versucht hmm weiss nicht mehr wo und welches, schade, in jedenfall den Mobile Template ist in anfang ;)

    Benutze SEOquake und SENSEO plugin, eigentlich einfachste ist SENSEO weil dieser zum URL alias mit meta's ganz schnell anzeigt ob etwas nicht in ordnung ist laut SENSEO und den auch vor den Benutzer besser geeignet ist, die den Texte und meta's eintippen. .

    [dieser meinst du: myItemPrice = parseFloat(form.nuPrice.value); ]]

    Einmal editiert, zuletzt von jotest (15. August 2011 um 11:51)

  • Yep.

    Bin beruflich in die USA unterwegs und kann leider nur sporadisch posten.

    Die Ursache der Fehler ist der dass die Variable existiert nur unter bestimmte bedigungen und nicht "immer" (ich gaube wenn Attributen existieren und wenn nicht, bin mir aber nicht mehr sicher...).
    Ist kein hekt dass im JS zu ändern, mir fehlt nur die Zeit um etwas sauber zu posten.

    Mister Jotest, übernhemen Sie!


    ;)

  • Hmm Julien,

    Viel zu viel für mich bin kein Programmierer, nur mit copy paste, vergleich und Anleitungen Lesen versuche ich so gut wie es geht.

    Mit dass von Anleitung und oder hier in Forum suchen, ( wenn etwa gleiche erfahrungen gemacht) könnte ich bisher etwas zu dieser Forum beitragen.

    Ok auch wen ich "Bugs" und oder extra's nutzvolle Module oder so sehe ;)

    Aber werde hier naturlich dann Nico oder Andreas fragen ?

  • Die Javascript Preisaktualisierung ist ja schon komplett neu und funktioniert jetzt auch problemlos. Kam mit dem QF3 mit.
    Der Scriptfehler läßt sich wie folgt beheben:

    (Template) product_info_v1.html

    Smarty
    {if $MODULE_product_options !=''}
                <input type="hidden" name="nuPrice" value="{$PRODUCTS_NUPRICE}">
                <input type="hidden" name="currency" value="{$CURRENCY}" />
                <input type="hidden" name="left" value="{$LEFT}" />
                <input type="hidden" name="right" value="{$RIGHT}" />
                <input type="hidden" name="decimal" value="{$DECIMAL}" />
                <input type="hidden" name="thousand" value="{$THOUSAND}" />
                <input type="hidden" name="decimals" value="{$DECIMALS}" />
                <div id="productsNEWprice"></div>
            {/if}

    ändern in:

    Smarty
    <input type="hidden" name="nuPrice" value="{$PRODUCTS_NUPRICE}">
                <input type="hidden" name="currency" value="{$CURRENCY}" />
                <input type="hidden" name="left" value="{$LEFT}" />
                <input type="hidden" name="right" value="{$RIGHT}" />
                <input type="hidden" name="decimal" value="{$DECIMAL}" />
                <input type="hidden" name="thousand" value="{$THOUSAND}" />
                <input type="hidden" name="decimals" value="{$DECIMALS}" />
            {if $MODULE_product_options !=''}
                <div id="productsNEWprice"></div>
            {/if}

    <p>Wir geben nur Anregungen und Hilfestellung auf Basis unserer Erfahrung, keine Rechtshilfe!<br>\m/('_')\m/</p>