Ok, ist nun für meine Zwecke soweit fertig und funktional.
Leider brauche ich nur die options_name variable und nicht die einzelnen options_values so dass dieser Zusatz zwar bewirkt, dass man in der product_listing_v1.html abgreifen kann welche Optionen verfügbar sind (bsp: dieses T-Shirt gibt es in verschiedenen Farben und Größen). Für meine Zwecke ist es jedoch uninteressant zu wissen, z.b. in welcher Farbe es dann wirklich der Fall ist, sondern lediglich, dass es unterschiedliche Farben gibt. Vielleicht kann trotzdem jemand was damit anfangen.
Änderungen in product_listing.php (/includes/modules/product_listing.php)
Finde: (Standardmäßig Zeile 25)
$module_content = array (); Füge dahinter ein:
// Create list of all available options$total_attributes_query = xtc_db_query
("select products_options_id, products_options_name from
".TABLE_PRODUCTS_OPTIONS
."
");$total_attributes = xtc_db_fetch_array
($total_attributes_query); for ( $x = 0; $x <count ( $total_attributes ); $x++ ) { $total_options[] = array ( 'id' => $total_attributes['products_options_id'], 'name' => $total_attributes['products_options_name']); } sort($total_options);$module_smarty->assign('total_options', $total_options);// Get attributes of current product $products_attributes_query = xtc_db_query
("select products_id, options_id, options_values_id from
".TABLE_PRODUCTS_ATTRIBUTES
."
"); while ($products_attributes = xtc_db_fetch_array
($products_attributes_query)) { $products_eff_attributes[] = array ( 'p_id' => $products_attributes['products_id'], 'p_options_id' => $products_attributes['options_id']); }$module_smarty->assign('products_eff_attributes', $products_eff_attributes); Finde: (Standardmäßig Zeile 65, nach dem vorigen einfügen Zeile 91)
while ($listing = xtc_db_fetch_array($listing_query, true)) {
$rows ++;
$module_content[] = $product->buildDataArray($listing);
}
Ersetze mit:
while ($listing = xtc_db_fetch_array
($listing_query, true)) { $rows ++; $module_content[] = $product->buildDataArray($listing); $prod_id[] = $module_content[$rows-1]['PRODUCTS_ID']; }// Compare attributes of current product with all available attributes for($i = 0; $i <count($prod_id); $i++) { for ($j=0; $j <count($products_eff_attributes); $j++) { if ($prod_id[$i] == $products_eff_attributes[$j]['p_id']) { $products_eff_options[$i][] = array ('id' => $products_eff_attributes[$j]['p_options_id']); } } }// Build data array of current attributes with names and values for ($i = 0; $i <count ($products_eff_options); $i++) { for ($j = 0; $j <count ($total_options); $j++) { for ($k = 0; $k <count ($total_options); $k++) { if ($products_eff_options[$i][$j]['id'] == $total_options[$k]['id']) { $products_eff_options[$i][$j]['name'] = $total_options[$k]['name']; } } } } // Add products attributes to module_content $module_smarty->assign('products_eff_options',$products_eff_options); for ($j = 0; $j <count($module_content); $j++) { for ($i = 0; $i <count($products_eff_options[$j]); $i++) { $module_content[$j]['PRODUCTS_ATTRIBUTES'][$i] = array ('name' => $products_eff_options[$j][$i]['name']); } } So, damit kann in der product_listing_v1.html (/templates/dein_template/module/product_listing/product_listing_v1.html)
auf die Optionen zugegriffen werden mit folgender Anweisung:
{foreach name=aussen item=attributes from=$module_data.PRODUCTS_ATTRIBUTES}
{$attributes.name}
{/foreach}
wo Ihr das einfügt, bleibt euch überlassen, solang es in der Hauptschleife steht
Es ist mehr oder weniger mein erstes PHP-Experiment, von daher gebt bitte bescheid ob das bei euch auch so funktioniert, ich hab's mal eben auf 'nem "nackten" Shop laufen lassen und da hat es getan.
Vielleicht kann jemand sich noch die mühe machen und die values mit einpflegen
Gruß