Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: ANLEITUNG: Einfache automatische Attribut Artikelnummer- & Preisaktualisierung

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Es gibt auch ein Problem wenn man mehrere Attribute bei einem Produkt benutzt, z.B Größe und Farbe.

    Wählt man nun zunächst die Größe wird Preisaufschlag und Artikelnummer korrekt angezeigt.

    Wird danach noch die Farbe gewählt die keinen Preisaufschlag mehr beinhaltet, wird wieder auf den Ausgangspreis ohne Aufschlag zurück gesetzt.

    Kann man da noch etwas machen? In meinen Fall würde es reichen wenn weitere Optionen die keinen Aufschlag haben und zusätzlich gewählt sind, beim Preis nicht berücksichtigt werden.

    Dieses kleine Script ist nur für eindimensionale Attribute gedacht, wobei ich bei Kleidung (Größe und Farbe sowie Bestand) immer mein Master/Slave Modul verwenden würde.

    Hier ein paar Zeilen die ausgetauscht werden können...

    Preis aktualisieren, wenn dem Attribut eine Differenz zugewiesen wurde:

    Code: PHP  [Auswählen]
    var o_model = {{/literal}{foreach name=o item=od from=$options}{foreach name=i item=oi from=$od.DATA}{if !($smarty.foreach.i.first && $smarty.foreach.o.first)},{/if}{$oi.ID}:{literal}{{/literal}model:"{$oi.MODEL}"{if $oi.PRICE != ''},price:"{if $oi.FULL_PRICE}{$oi.FULL_PRICE}{/if}"{/if}{literal}}{/literal}{/foreach}{/foreach}{*(c) hackersolutions.com*}{literal}};

    Preis aktualisieren, wenn dem Attribut eine Differenz zugewiesen wurde und Artikelnummer nur ändern, wenn dem Attribut eine zugewiesen wurde:

    Code: PHP  [Auswählen]
      var o_model = {{/literal}{foreach name=o item=od from=$options}{foreach name=i item=oi from=$od.DATA}{if !($smarty.foreach.i.first && $smarty.foreach.o.first)},{/if}{$oi.ID}:{literal}{{/literal}{if $oi.MODEL || $oi.PRICE}model:"{$oi.MODEL}"{if $oi.PRICE}{if $oi.MODEL},{/if}price:"{if $oi.FULL_PRICE}{$oi.FULL_PRICE}{/if}"{/if}{/if}{literal}}{/literal}{/foreach}{/foreach}{*(c) hackersolutions.com*}{literal}};

    Damit bei einer Auswahl der zweiten Attributsgruppe (ohne Preis oder Artikelnummer) nicht der vorherige Wert genommen wird:

    Code: PHP  [Auswählen]
        (typeof o_model[$(this).val()]['model'] != "undefined") ? p_model.html(o_model[$(this).val()]['model']) : '';
        (typeof o_model[$(this).val()]['price'] != "undefined") ? p_price.html(o_model[$(this).val()]['price']) : '';

    Es sollte eigentlich erkennbar sein, welche Zeilen mit den oben genannten ersetzt werden können.

    ...
    Oh...  Stimmt.
    Dann hat h-h-h es wohl nacheditiert.
    Da war ich was schnell mit schreiben.

    Ja das Script funktioniert super.
    Nur bei Preispräfix = leider nicht. Es addiert den Wert zum Preis.

    Ja, der Beitrag wurde nachträglich noch erweitert.

    Was ist hier mit Preispräfix gemeint? Als Preis ersetze ich den aktuellen Preis mit dem Attribut-FULL_PRICE und berechne nichts weiter an dieser Stelle.

    Viele Grüße,
    h-h-h
    rechtstexte für onlineshop

    DaveBurst

    • Neu im Forum
    • Beiträge: 20
    Hi,

    mit dem Preispräfix meint er denke ich das "+" oder "-".

    Grundsätzlich ist der Shop so konfiguriert, dass er den Aufpreis im Optionsfeld anzeigt.
    h-h-h zeigt diesen dann verrechnet mit dem Ausgangspreis an (FULL_PRICE). Was vollkommen richtig ist.

    Ich finde diese ursprüngliche Anzeigeweise grundsätzlich etwas ungeschickt, da wenn ich viele Attribute habe, der Kunde jedes Attribut auswählen muss um den Endpreis zu sehen(Was aber auch schon eine massive Verbesserung zur Basis ist).

    Was ich gemacht habe, ich zeige gleich den Endpreis mit im Attributfeld an, dann hat der Kunde es einfacher.

    Dazu einfach in den product_option Templates die Variable:

    Code: PHP  [Auswählen]
    {$item_data.PRICE}

    ersetzen durch

    Code: PHP  [Auswählen]
    {$item_data.FULL_PRICE}

    Viele Grüße
    David

    MW

    • Fördermitglied
    • Beiträge: 418
    • Geschlecht:
    Danke h-h-h, funktioniert :-B

    Es fehlte im Code nur am Ende die schließende Klammer hinter ['price']

    Code: Javascript  [Auswählen]
    (typeof o_model[$(this).val()]['price'] != "undefined") ? p_price.html(o_model[$(this).val()]['price'] : '';

    Vielen Dank

    Gruß
    Michael

    DaveBurst

    • Neu im Forum
    • Beiträge: 20
    Hallo Zusammen,

    der Beitrag/Hinweis von Michael bezieht sich auf den Post von h-h-h weiter oben.

    ;)

    h-h-h

    • modified Team
    • Beiträge: 4.562

    Es fehlte im Code nur am Ende die schließende Klammer hinter ['price']

    Code: Javascript  [Auswählen]
    (typeof o_model[$(this).val()]['price'] != "undefined") ? p_price.html(o_model[$(this).val()]['price'] : '';


    Danke, wurde korrigiert.

    Viele Grüße,

    h-h-h

    Tonka

    • Fördermitglied
    • Beiträge: 103
    • Geschlecht:
    Eine wirklich tolle und brauchbare Erweiterung, hab vielen Dank dafür. :)

    Kurze Frage hierzu: gibt es die Möglichkeit den soeben ausgewählten Optionswert nicht nur im Dropdownfeld sondern auch an anderer Stelle z.B. neben dem Preis ausgeben zu lassen?

    ich vermute diese zeile müsste kopiert und dafür geändert werden?

    Code: PHP  [Auswählen]
      var p_model = $('.p-model'), p_model_default = p_model.html(), p_price = $('.productprice'), p_price_default = p_price.html();

    Viele Grüße

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Halllo Tonka,
    ja ist möglich, basieren auf den obigen Codestellen:

    Code: PHP  [Auswählen]
    // die von dir zitierte Zeile ersetzen mit:
      var p_model = $('.p-model'), p_model_default = p_model.html(),
          p_price = $('.productprice'), p_price_default = p_price.html(),
          p_option = $('.p-option'), p_option_default = p_option.html();
    // und folgende Zeile nach der p_model.html(( ... bzw. p_price.html(( ... einfügen:
        p_option.html($(this).find("option:selected").text() || p_option_default);

    Und dann an der gewünschten Stelle im Produkt-Template:

    Code: Text  [Auswählen]
    <span class="p-option"></span>

    Viele Grüße,
    h-h-h

    Tonka

    • Fördermitglied
    • Beiträge: 103
    • Geschlecht:
    ui das ging aber sehr schnell :) ich bau gleich mal die editierte variante ein :)

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Hallo,
    nein ist ungetestet.
    Habe den Beitrag noch einmal bearbeitet gehabt.
    Ich benötige schon einen Link (per Mail), damit ich das Problem nachvollziehen kann.

    Viele Grüße,
    h-h-h

    Tonka

    • Fördermitglied
    • Beiträge: 103
    • Geschlecht:
    Hallo :) echt schön dass die Community so lebendig ist (y)

    Deine Anleitung ist zwar unmissverständlich aber als Unwissender muss ich trotzdem Fragen ob es so richtig ist?

    Code: PHP  [Auswählen]
    <script type="text/javascript">
    $(function(){literal} {
      var p_model = $('.p-model'), p_model_default = p_model.html(), p_price = $('.productprice'), p_price_default = p_price.html();  p_option = $('.p-option'), p_option_default = p_option.html();
      var o_model = {{/literal}{foreach name=o item=od from=$options}{foreach name=i item=oi from=$od.DATA}{if !($smarty.foreach.i.first && $smarty.foreach.o.first)},{/if}{$oi.ID}:{literal}{{/literal}model:"{$oi.MODEL}",price:"{if $oi.FULL_PRICE}{$oi.FULL_PRICE}{/if}"{literal}}{/literal}{/foreach}{/foreach}{*(c) hackersolutions.com*}{literal}};
      $(".productoptions select").live('change',function() {
        p_model.html((typeof o_model[$(this).val()]['model'] != "undefined") ? o_model[$(this).val()]['model'] : p_model_default);
        p_price.html((typeof o_model[$(this).val()]['price'] != "undefined") ? o_model[$(this).val()]['price'] : p_price_default);
            p_option.html($(this).find("option:selected").text() || p_option_default);
      });
    });{/literal}
    </script>

    XD

    Tonka

    • Fördermitglied
    • Beiträge: 103
    • Geschlecht:
    Konnte deinen Vorschlag nun testen. Der shop gibt mir nach der Auswahl einer Option alle definierten Optionswerte aus. Da ich kein originales Template sondern ein gekauftes von Squido verwende, habe ich deine Erweiterung auch im Originaltemplate getestet. aber auch hier // nach der Auswahl einer Option wird alles ausgegeben was definiert wurde... sieht lustig aus XD

    [Kommentar h-h-h: Erledigt, funktionierte mit dem aktualisiertem Code.]

    kloiner

    • Neu im Forum
    • Beiträge: 43
    Hallo zusammen,

    ich habe eine generelle Frage bezüglich mehrdimensionalen Attributen ... hoffe ich darf diese hier im Threat anhängen.

    Wenn ich ein Produkt mit mehreren Attributen habe, gibt es mehrere Möglichkeiten das umzusetzen.

    Gehen wir mal von Bekleidung aus.
    => 2 Attribute: Größe und Farbe

    Wie wird das am Besten umgesetzt?
    Ich habe bisher die Artikelmatrix gefunden und das Thema von h-h-h bezüglich Master/Slave Attribute. Bin mir aber nicht sicher was besser ist bzw. finde nicht ausreichend Infos über beide Ansätze.

    Kann mir jemand helfen, wo finde ich weitere Infos bzw. was wäre der beste Ansatz?

    Danke
    Oliver (kloiner)

    JWi

    • Frisch an Board
    • Beiträge: 50
    An und für sich fand ich diese Erweiterung ganz toll, bis ich sie im Shop rein gebastelt habe.
    Mir erstellt sich nicht ganz der Sinn, wieso nur mit Javascript die Artikel-Nr. auf der Artikelseite geändert wird, wenn im Warenkorb oder im Checkout wieder die originale Artikel-Nr. steht.

    Oder habe ich beim Einbau etwas falsch gemacht?
    14 Antworten
    11668 Aufrufe
    13. September 2011, 23:09:40 von Tomcraft
    6 Antworten
    5069 Aufrufe
    16. September 2011, 08:50:04 von rockmartin
    0 Antworten
    1885 Aufrufe
    25. April 2012, 23:14:45 von gar85
    0 Antworten
    1781 Aufrufe
    12. Oktober 2012, 16:51:55 von LordVader
               
    anything