Seite 1 von 1

Varianten Selektor Reihenfolge ändern

Verfasst: 4. Nov 2016, 15:44
von tblumrich
Hallo.

Ich teste derzeit mit dem Mini-Theme und kämpfe mich durch die Produktdarstellungen.
Wo finde ich eine Möglichkeit die Standard Reihenfolge in den Variantenselektoren zu ändern? Ich habe dort Größenangaben (32,34,36 usw.) und die werden nicht in aufsteigender Reihenfolge der Größen, sondern scheinbar durcheinander dargestellt.

Danke und Gruß
Thomas

Re: Varianten Selektor Reihenfolge ändern

Verfasst: 4. Nov 2016, 16:46
von supportteam2
Das Variantenselektor-Formular wird im Template "template_productIncludes_variantSelector_01.html5" aufgebaut. Die Merkmale und Ausprägungen liegen an dieser Stelle in der Reihenfolge vor, in der sie in den aktiven Produktvarianten vorkommen. Technisch ist das nicht direkt "zufällig", für den Betrachter de facto aber schon.

Sie haben im Template aber nun die Möglichkeit, beliebige Sortierungen zu realisieren.

Im folgenden Code-Beispiel habe ich im genannten Template ein paar Zeilen Code eingefügt, mit denen die Ausprägungen nach ihrer Bezeichnung sortiert werden (kommentiert mit "Sort the attribute values by their title"). Da die Sortierung hier im Template stattfindet, liegen die Ausprägungsbezeichnungen schon in der richtigen Ausgabesprache vor, sodass bei mehrsprachigen Auftritten die Sortierung hier gleich sprachbezogen stattfindet.

Man könnte auch die Merkmals-ID ($arrAttribute['attributeID']) bzw. die Merkmalsbezeichnung ($arrAttribute['attributeTitle']) prüfen und dann abhängig davon für die untergeordneten Ausprägungen nach unterschiedlichen Kriterien sortieren.

Code: Alles auswählen

		/*
		 * Create a variant selection form
		 */
		$attributeFormFields = array();
		foreach ($this->objProduct->_allVariantAttributes as $arrAttribute) {
			$attributeFormFields[$arrAttribute['attributeID']] = '<label>'.$arrAttribute['attributeTitle'].'</label>';
			$attributeFormFields[$arrAttribute['attributeID']] .= '<select id="ctrl_attribute_'.$arrAttribute['attributeID'].'" name="attribute_'.$arrAttribute['attributeID'].'">';
			
			$arrSelectedVariantAttributeValues = $this->objProduct->_selectedVariant->_attributes[$arrAttribute['attributeID']];
			if (is_array($arrSelectedVariantAttributeValues)) {
				reset($arrSelectedVariantAttributeValues);
			}

			/*
			 * Sort the attribute values by their title ====>
			 */
			$arr_valueTitles = array();
			foreach ($arrAttribute['values'] as $var_key => $arr_value) {
				$arr_valueTitles[$var_key] = $arr_value['valueTitle'];
			}
			array_multisort($arr_valueTitles, SORT_ASC, $arrAttribute['values']);
			/*
			 * <====
			 */


			foreach ($arrAttribute['values'] as $arrValue) {
				$attributeFormFields[$arrAttribute['attributeID']] .= '<option value="'.$arrValue['valueID'].'"'.(is_array($arrSelectedVariantAttributeValues) && $arrSelectedVariantAttributeValues[key($arrSelectedVariantAttributeValues)]['valueID'] == $arrValue['valueID'] ? ' selected' : '').'>'.$arrValue['valueTitle'].'</option>';
			}

			$attributeFormFields[$arrAttribute['attributeID']] .= '</select>';	
		}
Interessant ist hierzu auch folgender Link: http://docs.php.net/manual/en/function. ... tisort.php

Re: Varianten Selektor Reihenfolge ändern

Verfasst: 4. Nov 2016, 17:15
von tblumrich
Vielen Dank. Funktioniert! :)

Kleine Zusatzfrage. Kann man auch steuern, welche Variante als erstes nach dem Klick auf die Detailansicht aus der jeweiligen Übersicht heraus aufgerufen wird?

Re: Varianten Selektor Reihenfolge ändern

Verfasst: 7. Nov 2016, 05:59
von supportteam2
Ja, das ist leicht möglich. Im Backend müssen Sie hierzu in der Variantenübersicht eines Produktes lediglich die Reihenfolge der Varianten entsprechend einstellen, damit die Funktion ...

Code: Alles auswählen

$this->objProduct->_preselectVariantIfPossible();
..., welche im Produkt-Details-Template aufgerufen wird, die gewünschte Variante auswählt.

Die genannte Funktion selektiert die erstbeste Variante, die auf etwaige Filtereinstellungen passt und berücksichtigt dabei die von Ihnen definierte Varianten-Reihenfolge. Passen alle Varianten auf einen eventuell anzuwendenden Filter, so wird die in der Backend-Variantenübersicht oberste Variante selektiert. Ist diese aus Filtergründen nicht möglich, die nächste, usw.

Re: Varianten Selektor Reihenfolge ändern

Verfasst: 6. Mär 2020, 15:41
von tgrvm
Moin!

ich habe das in den aktuellen Code eingefügt, die Sortierung ändert sich leider nicht. Wahrschinlich hat sich seit 2016 aber auch das Template geändert... hat jemand eine Idee, wie das jetzt gehen kann?

Besten Dank und beste Grüße
Thorsten

Re: Varianten Selektor Reihenfolge ändern

Verfasst: 7. Mär 2020, 11:38
von supportteam2
Können Sie Ihr komplettes Template bitte an den techSupport schicken? Dann schauen wir es uns mal an.