If you are using verion 3.3.x then you can change the
product_images.tpl file to this:
Code:
{if $images ne ""}
{capture name=dialog}
<table border=0 width=100%>
<tr>
{section name=image loop=$images}
{if $smarty.section.image.index is div by 3}
</tr>
<tr valign="top">
{/if}
<td valign="top">
<table border=0 width=100%>
<tr>
<td align=center valign=top>
[img]../product_image.php?imageid={$images[image].imageid}[/img]
</td>
</tr>
<tr>
<td align=center valign=top>
{$images[image].alt}
</td>
</tr>
</table>
</td>
{/section}
</td>
</tr>
</table>
{/capture}
{include file="dialog.tpl" title=$lng.lbl_detailed_images content=$smarty.capture.dialog extra="width=100%"}
{/if}
That will but the images in table cells and use the Alt Text that you enter in with the images as a description under each image. Set up like this, they will display in rows with 3 columns. If you want more or less images in a row, then change the "is div by 3" part to what ever number you want.
This can be used with 3.4.x but would require modification to work with the images being stored in a file system rather than a database.