2010-06-21 10 views
0

Désolé pour la longueur ici. J'utilise oscommerce et ai une page avec tous nos produits spéciaux disposés dans un tableau de 3 colonnes. Je dois aligner le prix de chaque produit afin que tous les prix s'alignent sur l'écran les uns avec les autres.Aligner verticalement les prix des produits sur plusieurs cellules de table

visuellement, ce que je voudrais:

|-----------------------| 
| Image | Image | Image | 
| Title | Long | Very, | 
|  | Title | very, | 
|  |  | long | 
|  |  | title | 
|$19.99 |$29.99 |$139.00| 
|-----------------------| 

Actuellement, c'est ce que le code existant génère:

|-----------------------| 
| Image | Image | Image | 
| Title | Long | Very, | 
| $19.99| Title | very, | 
|  |$29.99 | long | 
|  |  | title | 
|  |  |$139.00| 
|-----------------------| 

Ceci est le code tel qu'il est:

<table border="0" width="100%" cellspacing="0" cellpadding="2"> 
    <tr> 
<?php 
$column = 0; 
$specials_query = tep_db_query($specials_split->sql_query); 
while ($specials = tep_db_fetch_array($specials_query)) { 
    $column ++; 
    echo '<td align="center" width="33%" class="productListing-data" valign="top"> 
    <div class="prodimagebox"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 
    'products_id=' . $specials['products_id']) . '">' . tep_image(DIR_WS_IMAGES . 
    $specials['products_image'], $specials['products_name'], SMALL_IMAGE_WIDTH, 
    SMALL_IMAGE_HEIGHT) . '</a></div><br><a href="' . 
    tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $specials['products_id']) 
    . '">' . $specials['products_name'] . '</a><br>' 
    . $currencies->display_price($specials['specials_new_products_price'], 
    tep_get_tax_rate($specials['products_tax_class_id'])) . '</td>' . "\n"; 

    if ((($column/3) == floor($column/3))) { 
?> 
    </tr> 
     <tr> 
     <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> 
     </tr> 
     <tr> 
<?php 
    } 
} 
?> 
    </tr> 
</table> 

J'essayais d'écrire du code qui écrit l'image et le titre, puis nous ramène 3 étapes dans le tableau. Ensuite, une nouvelle ligne, puis trois nouvelles colonnes contenant les prix des produits ci-dessus, un séparateur, puis continuer à partir de là. De cette façon, les prix seraient tous alignés verticalement les uns avec les autres, peu importe la taille du titre. Je me dirigeais vers le bas de plusieurs boucles imbriquées et je n'approchais toujours pas de mon résultat final.

L'aide serait grandement appréciée.

+0

Ce n'est pas un problème spécifique à PHP ou oscommerce. C'est un problème de style, donc j'ai repensé la question – jigfox

Répondre

0

vous devez mettre la description et le prix en deux différents div s:

<style> 
    td.productListing-data div.item_wrapper { 
    position: relative; 
    } 
    td.productListing-data div.item_wrapper div.item_description { 
    margin-bottom: 15px; 
    } 
    td.productListing-data div.item_wrapper div.item_price { 
    position: absolute; 
    bottom: 0; 
    height: 15px; 
    } 
</style> 

<td align="center" width="33%" class="productListing-data" valign="top"> 
    <div class="item_wrapper"> 
    <div class="item_description"> 
     <!-- the description --> 
    </div> 
    <div class="item_price"> 
     <!-- the price --> 
    </div> 
    </div> 
</td> 

Je viens de créer un exemple, tout ce que vous devez faire est de travailler dans votre table création.

+0

Malheureusement, j'ai essayé quelques variantes de cela et cela ne fonctionne pas sur cette page. Les prix ne s'alignent pas au bas de la cellule, ils finissent simplement par flotter sur le titre du produit. J'ai vraiment besoin de réécrire le code pour générer une ligne avec l'image et le titre, puis une autre ligne avec le prix. – Fireflight

+0

J'ai eu un problème similaire aujourd'hui, et j'ai appris que vous pouvez définir la position d'une table-cellule à relative. J'ai donc enveloppé tout le contenu de la cellule dans un autre 'div' avec' position: relative'. Cela a marché pour moi. – jigfox

+0

Eh bien, c'est en quelque sorte une amélioration. Les éléments qui ont le même nombre de lignes dans leurs titres sont désormais alignés. Ainsi, tous les prix pour les titres avec 2 lignes sont alignés, et les titres avec 3 lignes sont alignés les uns avec les autres. Cependant, les titres à 2 et 3 rangs n'ont pas de prix alignés car le div est seulement aussi grand que son contenu. Je sais que je pourrais nous trouver quelques-uns pour trouver le plus grand contenant div et mettre toutes leurs hauteurs à la même chose, mais je préfère éviter cela si possible. – Fireflight