Bonjour,
je ne pense pas que ça existe en contribution, mais je crois que si ça n'est pas simple, ça n'est pas impossible.
le principe passe par la détection de l'option par le nom puis alors on ajoute selon ce nom des action js sur l'option
Cette action peut restreindre par exemple le nombre d'option du second déroulant.
Tout se passe dans product_info.php bien sur :
tu vas trouver la boucle de lecture des options dans ces lignes là :
Code
$products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");
while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
donc dans cette boucle tu peux ajouter ta détection sur le nom de l'option pour insérer plus bas le code dans la création du menu déroulant :
Code
if (preg_match('/équipement?/i', $products_options_name['products_options_name']) ) {
$onChange = 'checkEquipmt(this.value);';
$info_plus = picto_info(TEXT_PI_EQUIPEMENT, 'L',2);
$idPull = ' id="PullEquip" ';
}
if (preg_match('/verres? teintés?/i', $products_options_name['products_options_name']) ) {
$info_plus = picto_info(TEXT_PI_VERRE_TEINTE, 'L',2);
$onChange = 'checkTeinte();';
$idTR = ' id="TrTeinte" ';
$idPull = ' id="PullTeinte" ';
}
$params .= ' style="float:left;width:396px;" onchange="MaFonction(this.value,\''.$products_options_name['products_options_id'].'\');'.$onChange.'"';
donc plus bas tu trouve la création du pull_down qui selon l'option peut changer de mise en forme ou activer une fonction javascript sur le onchange :
Code
<tr <?php echo $styleTR.$idTR;?>>
<td class="main" style="width:160px;"><?php echo $products_options_name['products_options_name'] . ':'; ?></td>
<td class="main"><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute, $params.$idPull). tep_draw_hidden_field('A_'.$products_options_name['products_options_id'].'','', 'id="'.'A_'.$products_options_name['products_options_id'].'"').$info_plus.' '; ?></td>
</tr>
bien sur, c'est là une méthode mais je n'ai pas trouvé mieux.
comme tu le vois, le TR qui inclut le menu déroulant peut avoir un style ($styleTR) et un id ($idTR) de manière à modifier via la css la forme ou à l'adresser via le DOM
la fonction picto_info insère une icône d'information avec un mouseover jQuery
et tu peux personnaliser la fonction js déclenchée par le déroulant via la variable $onChange qui s'ajoute à une fonction générique "MaFonction(this.value)" qui récupère la valeur de l'option pour le js.
Il ne servirait à rien que je te file mon script, car il est complètement personnalisé et correspond spécifiquement à un besoin. J'espère que ces bouts de code te donneront des idées de dev à partir de ce principe.
Bon code