Produktpreis mit Mengeneinheiten

Thema wurde von vi-ict, 6. Juni 2020 erstellt.

  1. vi-ict

    vi-ict Neues Mitglied

    Registriert seit:
    29. Mai 2018
    Beiträge:
    4
    Danke erhalten:
    0
    Danke vergeben:
    1
    Hallo zusammen,

    tl;dr:
    Die Mengeneinheit welche an den Produktpreis über ein price.USERMOD angefügt wurde, wird (vermutlich) vom init-de.min.js Script beim Laden der Seite zensiert.
    Ein Workaround, den String über die xtcPrice Class einzufügen funktioniert nur teilweise.

    Beschreibung:
    Bisher läuft unser Shop mit GX3 v. 3.9.3.1 und die angepasste Preisdarstellung funktioniert wie gewünscht.
    Da wir einige manuelle Anpassungen gemacht haben, ist das Updaten immer mit etwas Nacharbeit verbunden.
    Daher habe ich kürzlich eine Kopie erstellt und diese auf GX4 v. 4.0.0.1 aktualisiert.

    Nach dem Update habe wir nun das Problem, dass die bisherige Preisdarstellung "X.XX EUR pro Mengeneinheit" durch ein Script zu "X.XX EUR" beschnitten wird. Dies ist sowohl im Produktlising als auch in der Produkt-Details Ansicht der Fall. Wenn ich über den Debugger einige Breakpoints setze konnte ich die Ursache im init-de.min.js Script lokalisieren. Die Darstellung wird also korrekt geladen und während des Ladevorgangs wird die Preisdarstellung geändert.

    Bisher war die Anpassung über die price.USERMOD.html wie folgt realisiert:


    {assign var="p_quantity_unit" value="EUR`$TXT_PER``$PRODUCTS_QUANTITY_UNIT`"}
    ...
    {if $PRODUCTS_QUANTITY_UNIT}{$PRODUCTS_PRICE|replace:'EUR':$p_quantity_unit}{else}{$PRODUCTS_PRICE}{/if}


    Da diese Anpassung vom Script zensiert wird, habe ich einen Workaround über die xtcPrice.php realisiert. Dabei sei noch erwähnt, dass 95% unserer Artikel als Sonderangebote hinterlegt. Somit lande ich in xtcPrice->xtcFormatSpecial().
    Dort habe ich nun eine separate Funktion deklariert, welche mir den vpe_name anhand der products_id zurück gibt und diese wie folgt eingebunden:



    $t_price_html .= '<span class="productOldPrice">' . $this->v_coo_language_text_manager->get_text('old_special_price') . ' ' . $this->xtcFormat($p_old_price, $p_format) . TXT_PER . $this->get_vpename_by_productsid($p_products_id) . '</span><br />';
    ...
    $t_price_html .= " " . $this->v_coo_language_text_manager->get_text('new_special_price') .' ' . $this->checkAttributes($p_products_id) . ' ' . $this->xtcFormat($p_special_price, $p_format) . TXT_PER . $this->get_vpename_by_productsid($p_products_id) ;


    Dadurch bekomme ich den korrekten String in die Preisanzeige welcher auch nicht vom Script weggeschnitten wird. Es ist für mich keineswegs nachvollziehbar, weshalb die USERMOD Lösung zensiert wird, diese Lösung jedoch nicht. Nun ja, soweit so gut. Das Problem ist also für 95% der Artikel gelöst.

    Für die restlichen 5% (normale Artikel) habe ich den selben Funktionsaufruf in der Funktion
    xtcFormatSpecialGraduated an der entsprechenden Stelle hinzugefügt. Nun wird der "Pro Mengeneinheit" String in der Produktansicht angezeigt, allerdings wird dieser wieder vom Script zensiert. Wie ich es auch drehe und wende, selbst wenn ich die selben <span> Elemente wie bei den Sonderpreis Artikeln mit einfüge, das Script zensiert alles außer "X.XX EUR" weg. Das Eigenartige ist zudem, dass bei manchen "normalen" Artikeln im Produktlisting der "pro Mengeneinheit" Zusatz nicht zensiert wird, bei anderen "normalen" Artikeln wiederum schon. Dieses Verhalten macht für mich einfach keinen Sinn...
    Mein erster Lösungsansatz, noch vor der Änderung der xtcPrice Class war die Ursache im init-de.min.js Script zu finden und dort zu fixen. Das gestaltete sich allerdings als schwieriger als gedacht, daher der o.g. Workaround. Da es für die "normalen" Artikel dennoch nicht funktioniert, würde es wohl doch Sinn machen, die Lösung im Script zu suchen. Ich habe nur keinen Plan, was dort genau passiert, dass der String zensiert wird...

    Hat hier denn jemand eine Idee, warum der Artikelpreis zensiert wird, oder vll. sogar eine Lösung wie ich die Preisdarstellung entsprechend anpassen kann? Ich bin für jegliche Ideen und Vorschläge überaus dankbar!

    Viele Grüße
    Julia
     
  2. vi-ict

    vi-ict Neues Mitglied

    Registriert seit:
    29. Mai 2018
    Beiträge:
    4
    Danke erhalten:
    0
    Danke vergeben:
    1
    Hallo zusammen,

    ich habe nun endlich die Ursache für die Entfernung des Zusatzes gefunden.
    Verantwortlich dafür ist der AttributesAjaxHandler. Dieser erforderte nun noch etwas Anpassung...

    Viele Grüße