Wie stellt man Werte aus der Filterauswahl eines Artikels in der Artkelliste / in der Kategorieübersicht dar? Gibt es den Artikel beispielsweise in bestimmten Größen (z.B. XS, S, M und L), kann man dies einem Kunden, der größe XXL sucht, bereits in der Artikelübersicht mitteilen (ohne dass dieser vorher den betreffenden Filter aktivieren muss), um dem User unnötige Klicks auf Artikel zu ersparen, die nicht in der gewünschten Größe verfügbar sind. Gleiches gilt für verfügbare Farben: Möchte man die Filterung ergänzen (z.B. gelb, rot, grün, blau, weiß, schwarz, grau) und möchte feiner unterteilte Farben bereits in der Artikelübersicht in Gambio darstellen (z.B. himmelblau, azurblau, türkis oder cobaltblau), greift man auf die Filterzuordnungen zurück.
Zuerst stellt man einen Klassen-Overload für die "product"-Klasse her, In unserem Beispiel nehmen wir diese Deklaration in der Datei
\user_classes\overloads\product\ECONCESS_product.inc.php
her und erweitern hierbei die Funktion buildDataArray(&$array, $image = 'thumbnail') mit Hilfe der folgenden Syntax:
class ECONCESS_product extends ECONCESS_product_parent{
function buildDataArray(&$array, $image = 'thumbnail')
{
$t_data_array = parent::buildDataArray($array, $image);
$product_id = $array['products_id'];
$t_feature_set_query = xtc_db_query("SELECT feature_value_description.feature_value_text
FROM feature_set_to_products
LEFT JOIN feature_set_values
ON feature_set_to_products.feature_set_id=feature_set_values.feature_set_id
LEFT JOIN feature_value
ON feature_set_values.feature_value_id=feature_value.feature_value_id
LEFT JOIN feature_value_description
ON feature_value.feature_value_id=feature_value_description.feature_value_id
WHERE feature_set_to_products.products_id = '" . $product_id . "'
AND feature_value.feature_id = 9
");
if(xtc_db_num_rows($t_feature_set_query) > 0)
{
while($t_feature_set = xtc_db_fetch_array($t_feature_set_query))
{
$t_feature_set_values[] = $t_feature_set['feature_value_text'];
}
$t_data_array['PRODUCTS_COLORSWATCH'] = implode(" - ",$t_feature_set_values);
}
return $t_data_array;
}
}
Was haben wir hier also gemacht?
Zuerst haben wir das Data Array befüllt, wie in der Elternklasse bzw. deren bisher bestehenden Overloads beschrieben. Zusätzlich möchten wir dem Template noch den Eintrag "PRODUCTS_COLORSWATCH" bereitstellen, mit dem wir in der Artikelübersicht dann die zur Verfügung stehenden Farbvarianten darstellen können - hier vereinfachender Weise in Textform dargeboten.
Hierfür müssen wir zuerst die Tabelle "feature_sets_to_products" bemühen, die uns zeigt, welche Feature Set ID welchem Produkt zuzuordnen ist. Diese fügen wir dann mit der Tabelle "feature_set_values" zusammen, um zu erfahren, welche Value IDs dem jeweiligen Feature Set zuzuordnen ist. Um dann noch den gewünschten Filter zu extrahieren, bedienen wir uns der Tabelle "feature_value", in dem wir nur die Werte mit der Feature ID 9 herausnehmen (Feature ID 9 entspricht in unserem Besipiel dem Filter "Farbe").
Zum Schluss fügen wir noch die Tabelle "feature_value_description" hinzu, die uns dann die zugehörigen Optionsbeschreibungen zur Verfügung stellt (z.B. "Schwarz" und "Weiß", hier mit implode() zusammengefügt zu "Schwarz - Weiß").
Anschließend können wir den resultierenden Eintrag in der Datei
\templates\TEMPLATENAME\objects\product_boxes_list.html
oder in der jeweilig verwendeten Ausgabedatei verwenden in der Smarty-Variable mit
{$module_data.PRODUCTS_COLORSWATCH}
an einer gewünschten Stelle ausgeben. Ende.