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: Attribute Auswahl Pflicht

    lederguru

    • Fördermitglied
    • Beiträge: 22
    • Geschlecht:
    ANLEITUNG: Attribute Auswahl Pflicht
    am: 30. Juni 2011, 21:46:59
    ACHTUNG: Ein Modul für Shopversion 2.x gibt es hier: MODUL: Attributauswahl als Pflichtfeld und vorbelegt mit "Bitte wählen"

    Kennt jemand das Problem: Artikel, z.B. Textil, mit Optionsfeld Größe: S, M, L, XL
    Wie kann ich den Kunden zwingen, eine Option zu wählen, in dem ich per default einen Wert wie "bitte auswählen" hinterlege, der nicht in den Warenkorb gelegt werden kann? Ansonsten drohen Berge von Fehlbestellungen, weil manche Kunden gar nicht merken, daß eine Option, und dann noch die richtige, ausgewählt werden muss.. ;-)
    Dieser sollte dann auch als Default drinstehen (nächstes Teilproblem, Default-Optionswert hab ich auch nicht gefunden...).
    Google gab mir bei beiden Fragen nichts her..
    Danke im Voraus!!

    ACHTUNG: Ein Modul für Shopversion 2.x gibt es hier: MODUL: Attributauswahl als Pflichtfeld und vorbelegt mit "Bitte wählen"

    [EDIT GTB 16.07.2011: Hier geht's direkt zur Anleitung.]
    [EDIT Tomcraft 16.10.2017: Modul für Shopversion 2.x verlinkt.]

    Linkback: https://www.modified-shop.org/forum/index.php?topic=13709.0

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.199
    • Geschlecht:
    ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #1 am: 30. Juni 2011, 22:05:33
    Die Lösung findest du hier: ANLEITUNG: Attribut Dropdown Anzeige ergänzen mit "bitte wählen"

    Grüße

    Torsten

    lederguru

    • Fördermitglied
    • Beiträge: 22
    • Geschlecht:
    ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #2 am: 14. Juli 2011, 21:28:24
    @Torsten: vielen Dank!! Werde ich nächste Woche mal ausprobieren, hört sich nicht an, als ob man's in 10 Minuten hinkriegt... schönen Abend noch!!!

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.222
    • Geschlecht:
    ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #3 am: 15. Juli 2011, 05:26:53
    :stop:

    Das ist nicht die Lösung !

    Dort wird lediglich erklärt wie man global den Wert "Bitte wählen..." definiert.

    Das lässt sich aber auch über den Admin machen.

    Gruß Gerhard

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.222
    • Geschlecht:
    ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #4 am: 15. Juli 2011, 11:57:43
    ACHTUNG: Ein Modul für Shopversion 2.x gibt es hier: MODUL: Attributauswahl als Pflichtfeld und vorbelegt mit "Bitte wählen"

    Resultierend aus dem Thema ANLEITUNG: Attribut Dropdown Anzeige ergänzen mit "bitte wählen" habe ich euch das Paket mal zusammen gestellt und hier veröffentlicht, da es im anderen Beitrag etwas verloren ist und damals die Fragestellung nur mit der Erweiterung des "Bitte wählen" ging, nicht aber um die Pflichtauswahl der Attribute.

    Hier meine Lösung für einen JS Check inkl. Fallback. Damit wird die Auswahl auch geprüft, wenn JS deaktiviert ist.

    Das ganze ist auch Multilingual.

    Also los:

    in der /includes/modules/product_info.php

    das hier:

    Code: PHP  [Auswählen]
    $info_smarty->assign('FORM_ACTION', xtc_draw_form('cart_quantity', xtc_href_link(FILENAME_PRODUCT_INFO, xtc_get_all_get_params(array ('action')).'action=add_product')));

    mit dem hier ersetzen:

    Code: PHP  [Auswählen]
        $info_smarty->assign('FORM_ACTION', xtc_draw_form('cart_quantity', xtc_href_link(FILENAME_PRODUCT_INFO, xtc_get_all_get_params(array ('action')).'action=add_product'),'post','onsubmit="return wk_check(\''.PULL_DOWN_DEFAULT.'\')"'));

    und die Funktion so ins Template am Anfang einfügen:

    /templates/xtc5/module/product_info/product_xx.html

    Code: PHP  [Auswählen]
    {literal}
    <script type="text/javascript"><!--
    function wk_check(search){
    var element = document.forms["cart_quantity"].elements;
        for (var i=0;i<element.length;i++) {
        if(element[i].options[element[i].selectedIndex].text.indexOf(search) != -1) {
          alert(unescape('{/literal}{#please_select#}{literal}'));
          return false;
        }
      }
    }
    //-->
    </script>
    {/literal}

    und das an gewünschter Stelle im Template platzieren:

    Code: PHP  [Auswählen]
    {if $error}<div class="errormessage">{$error}</div>{/if}

    jetzt muss nur noch das "Bitte wählen" als Default Wert zugeordnet werden. Das am besten so:

    /includes/modules/product_attributes.php

    das hier:

    Code: PHP  [Auswählen]
        $col = 0;
        while ($products_options = xtc_db_fetch_array($products_options_query,true)) {

    mit dem hier ersetzen:

    Code: PHP  [Auswählen]
    $products_options_data[$row]['DATA'][0] = array ('ID' => 0, 'TEXT' => PULL_DOWN_DEFAULT);
    $col = 1;

    while ($products_options = xtc_db_fetch_array($products_options_query,true)) {

    und vor dem hier:

    Code: PHP  [Auswählen]
      }

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

    das hier einsetzen:

    Code: PHP  [Auswählen]
    if (isset($_GET['error']) && $_GET['error']=='attributecheck') {
      $info_smarty->assign('error', ATTRIBUTE_ERROR);
    }

    /includes/cart_actions.php

    im case 'add_product' :

    vor dem hier:

    Code: PHP  [Auswählen]
                            $_SESSION['cart']->add_cart((int) $_POST['products_id'], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $_POST['id'])) + xtc_remove_non_numeric($_POST['products_qty']), $_POST['id']);

    das hier einfügen:

    Code: PHP  [Auswählen]
    if (isset($_POST['id'])) {
      while (list ($option, $value) = each($_POST['id'])) {
        if($value==0){
          xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . (int) $_POST['products_id'] . '&error=attributecheck','NONSSL'));
        }
      }
    }

    Jetzt muss man nur noch die Sprachvariablen einfügen.

    /lang/german/german.php

    das hier einfügen:

    Code: PHP  [Auswählen]
    define('ATTRIBUTE_ERROR', 'Bitte wählen sie eine Ausführung');

    /lang/german/lang_german.conf in Sektion "[product_info]" das hier einfügen:

    Code: PHP  [Auswählen]
    please_select = 'Achtung%21 bitte zuerst Ausf%FChrung w%E4hlen.'

    damit ist das Ganze auch mehrsprachig, inkl. Fallback.

    Gruss Gerhard

    ACHTUNG: Ein Modul für Shopversion 2.x gibt es hier: MODUL: Attributauswahl als Pflichtfeld und vorbelegt mit "Bitte wählen"

    [EDIT Tomcraft 30.12.2011: Fehler in Anleitung korrigiert, Danke an fishnet aka Karsten für den Hinweis.]
    [EDIT Tomcraft 30.12.2011: Anleitung um Mehrsprachigkeit ergänzt, Danke an Gordon.]
    [EDIT Tomcraft 16.10.2017: Modul für Shopversion 2.x verlinkt.]

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.222
    • Geschlecht:
    ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #5 am: 16. Juli 2011, 08:36:23
    So, hier ist es besser aufgehoben. Viel Spass damit.

    Gruss Gerhard

    hedon02

    • Viel Schreiber
    • Beiträge: 618
    Re: ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #6 am: 15. August 2011, 15:57:03
    :thumbs: Sehr schön aufbereitete Anleitung. Es funktioniert perfekt, danke GTB.

    Vielleicht noch eine Frage:
    in der "/includes/cart_actions.php" unterscheidet sich folgender Code von xtc5 zu dieser Anleitung:

    xtc5:
    Code: PHP  [Auswählen]
    $_SESSION['cart']->add_cart((int) $_POST['products_id'], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $_POST['id'])) + $cart_quantity, $_POST['id']);

    Anleitung:
    Code: PHP  [Auswählen]
    $_SESSION['cart']->add_cart((int) $_POST['products_id'], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $_POST['id'])) + xtc_remove_non_numeric($_POST['products_qty']), $_POST['id']);

    Es funzt mit beiden Code-Schnippseln, als völlig Programmierunbegabter bin ich aber nicht sicher ob dies eine weitere notwendige Änderung ist, oder damit nichts zu tun hat.

    Viele Grüsse

    web28

    • modified Team
    • Beiträge: 9.404
    Re: ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #7 am: 15. August 2011, 16:09:22
    Richtig ist:

    Code: PHP  [Auswählen]
    $_SESSION['cart']->add_cart((int) $_POST['products_id'], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $_POST['id'])) + $cart_quantity, $_POST['id']);

    Bei der anderen Variante greift die Fehlerabfrage für die Stückzahl nicht ($cart_quantity).

    hedon02

    • Viel Schreiber
    • Beiträge: 618
    Re: ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #8 am: 15. August 2011, 16:17:08
     :-) Danke web28.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.199
    • Geschlecht:
    Re: ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #9 am: 15. August 2011, 16:49:06
    [...]
    Vielleicht noch eine Frage:
    in der "/includes/cart_actions.php" unterscheidet sich folgender Code von xtc5 zu dieser Anleitung:
    [...]

    Das stimmt so nicht ganz! Mit dem xtc5 Template hat das erstmal gar nichts zu tun. modified eCommerce Shopsoftware 1.03 war die einzige Version, in der der Code wie von dir beschrieben aussah. Die Anleitung bezieht sich jedoch auf modified eCommerce Shopsoftware 1.05! :!:

    Grüße

    Torsten

    hedon02

    • Viel Schreiber
    • Beiträge: 618
    Re: ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #10 am: 15. August 2011, 17:55:37
     :hust: Ja, hast vollkommen Recht, Tomcraft. Ist mir nicht aufgefallen, weil es im SP geändert wurde.

    Gruesse

    web28

    • modified Team
    • Beiträge: 9.404
    Re: ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #11 am: 15. August 2011, 18:26:18
    [...] Die Anleitung bezieht sich jedoch auf modified eCommerce Shopsoftware 1.05! :!:
    [...]
    In dieser Version ist der Code aber falsch, deshalb auch das SP1!  ;-)

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.199
    • Geschlecht:
    Re: ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #12 am: 15. August 2011, 18:59:08
    Jupp, das ist wieder ein anderes Thema. ;-)

    Grüße

    Torsten

    Spegeli

    • Schreiberling
    • Beiträge: 278
    • Geschlecht:
    Re: ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #13 am: 15. August 2011, 20:03:43
    Hat vielleicht jemand 'ne Anleitung wie ich das ganze auch für "MODUL: Neues Artikelmerkmal TEXTFELD (Freitext Modul)" benutzen kann?

    Markus

    • modified Team
    • Beiträge: 1.368
    • Geschlecht:
    Re: ANLEITUNG: Attribute Auswahl Pflicht
    Antwort #14 am: 11. Dezember 2011, 16:52:46
    Hi ...

    weil ich gerade drüber stolpere ... vielleicht hat das ja schonmal jemand gemacht ...

    Baut man das ganze ein und hat schon das "MODUL: ATTRIBUTE PRICE UPDATER" drin, funktioniert das mit dem updaten der Preise leider nicht mehr.

    Vielleicht hat das ja schonmal jemand gelöst? ;-)

    Das Problem liegt in der "products_attributes.php" ... diese 3 Zeilen:

    Code: PHP  [Auswählen]
    $products_options_data[$row]['DATA'][0] = array ('ID' => 0, 'TEXT' => PULL_DOWN_DEFAULT);
    $col = 1;
     
    while ($products_options = xtc_db_fetch_array($products_options_query,true)) {

    Markus

    5 Antworten
    4512 Aufrufe
    11. September 2013, 15:44:03 von r0bs
    10 Antworten
    4568 Aufrufe
    05. Januar 2012, 12:43:42 von GTB
    2 Antworten
    2933 Aufrufe
    09. Oktober 2013, 15:11:54 von beeb
    8 Antworten
    4299 Aufrufe
    25. September 2011, 13:11:24 von Tomcraft