Aide - Recherche - Membres - Calendrier
Version complète : [Résolu] Fixer largeur d'un menu déroulant
Forum osCommerce-fr > Les Bases d'OsCommerce MS2 > Fonctionnement
Alix32
Bonjour,

J'ai QTPro et dans le product_info, je souhaiterai que les listes déroulantes contenant les attributs soit plus larges. Par défaut dans QT Pro, la largeur des listes déroulantes varie selon la longueur du texte. J'ai fouillé un peu et ces listes deroulantes sont appelées depuis le fichier pad_base.php et j'imagine que tout se passerait autour de tep_draw_pull_down_menu?

Code
        $out.='<tr><td align="right" class=main><b>'.$nonstocked['oname'].":</b></td><td class=main>".tep_draw_pull_down_menu('id['.$nonstocked['oid'].']',$nonstocked['ovals'],$nonstocked['default'])."</td></tr>\n";


J'ai essayé de mettre un width= dans la balise <td class=main> mais ca n'a rien changé
Pourriez-vous m'aider svp?

Merci!
Gnidhal
Quand tu regardes la fonction tep_draw_pull... :
function tep_draw_pull_down_menu($name, $values, $default = '', $parameters = '', $required = false)
le quatrième paramètre permet de passer des paramètres à la fonction donc :
tep_draw_pull_down_menu('id['.$nonstocked['oid'].']',$nonstocked['ovals'],$nonstocked['default'])
peut devenir
tep_draw_pull_down_menu('id['.$nonstocked['oid'].']',$nonstocked['ovals'],$nonstocked['default'],'style="width:120px;"')
Cela dit, en fixant la largeur d'un déroulant, tu risques de rencontrer des problèmes d'affichage sous IE qui va tronquer les entrées qui dépassent.

A toi de voir wink.gif
Alix32
Bonjour Gnidhal et merci pour ta réponse rapide.

En fait dans le pad_base.php, rien ne change. J'ai donc été dans le fichier pad_multilpe_dropdowns.php car c'est cette option d'affichage des attributs que j'utilise avec QTPro et voici donc le code qui serait a modifier:

Code
$out.='<tr>
<td align="left" class=main><b>'.$attributes[$o]['oname'].":</b></td>
<td class=main>".tep_draw_pull_down_menu('id['.$attributes[$o]['oid'].']',array_values($attributes[$o]['ovals']),$attributes[$o]['default'],"onchange=\"stkmsg(this.form);\"")."
</td>
</tr>\n";


Lorsque je rajoute le code que tu suggeres:

Code
$out.='<tr>
<td align="left" class=main><b>'.$attributes[$o]['oname'].":</b></td>
<td class=main>".tep_draw_pull_down_menu('id['.$attributes[$o]['oid'].']',array_values($attributes[$o]['ovals']),$attributes[$o]['default'],'style="width:150px;"',"onchange=\"stkmsg(this.form);\"")."
</td>
</tr>\n";


Les largeurs sont bien modifiées mais sous le menu deroulant, j'ai maintenant un texte qui s'affiche: TEXT_FIELD_REQUIRED.

Une idée?

Merci!
Gnidhal
bah wai,
le onchange original est déjà dans le paramètre 4 : $parameters
il faut donc grouper les deux comme ça:
'style="width:150px;" onchange="stkmsg(this.form);"'
attention changé les délimiteurs externes " en ' et donc viré les \ devant les " dans la chaine, respecte cette syntaxe.
Alix32
Hop la magnifique! Merci Gnidhal...je me mets sur le "cross-browser testing" comme tu le soulignais dans ta 1ere réponse.

Merci encore pour tes lumieres!
hagen
Bonjour,

Je suis un peu ds le même cas, à savoir avoir une liste déroulante dont j'aimerais fixer la largeur (Ex:80px), avec des valeurs dont la taille dépasse 80px.

Donc j'ai essayé de zieuter le code ci-dessus dans le but de l'adapter au mien.
Le truc que je ne percute pas : A quoi correspond "stkmsg" ?
C'est une valeur propre à QTPro ?

smile.gif

Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.