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
Varianten Selektor Reihenfolge ändern
- supportteam2
- Beiträge: 427
- Registriert: 4. Mär 2015, 14:05
Re: Varianten Selektor Reihenfolge ändern
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.
Interessant ist hierzu auch folgender Link: http://docs.php.net/manual/en/function. ... tisort.php
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>';
}
Re: Varianten Selektor Reihenfolge ändern
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?
Kleine Zusatzfrage. Kann man auch steuern, welche Variante als erstes nach dem Klick auf die Detailansicht aus der jeweiligen Übersicht heraus aufgerufen wird?
- supportteam2
- Beiträge: 427
- Registriert: 4. Mär 2015, 14:05
Re: Varianten Selektor Reihenfolge ändern
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 ...
..., 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.
Code: Alles auswählen
$this->objProduct->_preselectVariantIfPossible();
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
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
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
- supportteam2
- Beiträge: 427
- Registriert: 4. Mär 2015, 14:05
Re: Varianten Selektor Reihenfolge ändern
Können Sie Ihr komplettes Template bitte an den techSupport schicken? Dann schauen wir es uns mal an.