Zum Inhalt springen

Automatischer Wrap um Varianten <option>-Tag

Erstellt am 27. März 2013 · 2 Antworten · letzte Antwort am 5. April 2013

Tags: Frage

spL ·

Hallo Zusammen,

nach 3 Stunden Suche gebe ich genervt von der Extension auf...
Ich bin bereit im Quelltext rumzufuschen - aber auch hier habe ich nichts finden können.

tt_products 2.7.5

Wie kann ich die die DropDown-Ausgabe Select->Option im FrontEnd für die Varianten Felder Color, Description, etc verhindern und mir die Felder im Klartext anzeigen lassen?

Hier hats mal einer gelöst - jedoch mit einer alten tt_products Version:
http://www.typo3forum.net/forum/tt_products/27623-tt_products-varianten-ausgabe-formatieren.html

Wer kann helfen?
#angry#

MrHawaii ·

Hi spL

Ich bin grad an einem ähnlichen Problem dran. Ich glaub nicht, dass es geht, denn dann funktioniert die doFetchRow Funktion nicht mehr, wie sie soll. Sie hängt so wie ich es einschätze an dem Attribut selectedIndex. Damit wird der
Index und der Value der gewählten Variante ausgeben. Wenn du es als Klartext wählst, musst du ja auf die HTML-Option verzichten, oder seh ich das falsch. Wäre natürlich nicht schlecht, wenn man option losgelöst von select verwenden kann.
Das würde mir zumindest helfen. Ich versuch mich grad daran, eine Lösung zu finden, wie ich über meine Thumbnail-Scroll-Line die Variante auswählen und per Ajax laden kann. Als Link mit Neuladen ist das ja relative einfach. Aber ich
will's eben in einer Ajaxvariante. Dazu hab ich versucht die doFetchRow Funktion umzuschreiben, aber irgendwie klemmts, denn die document.getElementById holt sich ja alle Werte aus den gesetzten Varianten-Auswahlboxen in der Einzelansicht.
Mit dem Produktimage2 funktioniert es. Aber er springt nicht zum geklickten Element, sondern nimmt das erste Element der jeweiligen gesetzten ID. Wenn ich die ID veränder, dann müsste ich ja nach "var id = feTable+"-"+view+"-"+uid+"-"+field;"
noch ne HTML-ID anhängen. Aber ich glaub dann funktioniert ja meine normale Varianten Select-Box nicht mehr.

Hat jemand ne Idee, wie ich das lösen könnte? Oder wäre es einfacher eine neue Function zu schreiben,
um den Wert von select gleich als Wert in das data[table][fields] zu schreiben?

Danke schon mal für eure Tipps.

Hier die doFetchRow Funktion aus class.tt_products_javascript.php mit meinen Anpassungsversuchen

var vBoxCount = new Array(1); // number of select boxes
var v = new Array(); // variants
vBoxCount["tt_products"] = 10;
v["tt_products"] = new Array(10);
v["tt_products"][0] = "color";
v["tt_products"][1] = "size";
v["tt_products"][2] = "description";
v["tt_products"][3] = "gradings";
v["tt_products"][4] = "color2";
v["tt_products"][5] = "color3";
v["tt_products"][6] = "size2";
v["tt_products"][7] = "size3";
v["tt_products"][8] = "material";
v["tt_products"][9] = "quality";

function doFetchRow(table, view, uid, select) { //select hab ich hinzugefügt, als Ersatz für selectedIndex)
   var data = new Array();
   var sb;
   var temp = table.split('_');
   var feTable = temp.join('-');
   
   data["view"] = view;
   data[table] = new Array();
   data[table]["uid"] = uid;

   for (var k = 0; k < vBoxCount[table]; k++) {
      var field = v[table][k];
      var id = feTable+"-"+view+"-"+uid+"-"+field;
      sb = document.getElementById(id);

      if (typeof sb == 'object') {
         try {
            var index = sb.selectedIndex; // Verknüpfung zu HTML select
            var index2 = sb.title; // ein Alternativwert für selectedIndex
            if (typeof index != 'undefined') {
               var value = sb.options[index].value;
               data[table][field] = value;
            }
            if (index2 != '') {  // Wenn im HTML-Element der Variante ein "title" gesetzt ist
            var value = select;
            data[table][color] = value;
            }
         }
         catch (e) {
            // nothing
         }
      }
   }
   tt_products_fetchRow(data);
   return true;
}

Auszug aus der Einzelansicht von meinem Shop-Template

<span onclick="doFetchRow('tt_products','single',896,1);" id="###PRODUCT_SIZE_ID###" title="1">###PRODUCT_IMAGE2:MINI###</span>
<span onclick="doFetchRow('tt_products','single',896,2);" id="###PRODUCT_SIZE_ID###" title="2">###PRODUCT_IMAGE3:MINI###</span>
spL ·

Danke für die Ansätze. Ich habe mich für eigene, individuelle Felder entschieden - das geht m.E. schneller.

Was dein Ajax vorhaben angeht bin ich leider auch raus, wünsche aber viel Erfolg 🙂