Código PHP:
<?
$contador=0;
foreach ($xopie->products as $product) { ?>
<div class="homePromo <?=(in_array("ECOMMERCE_PRODUCTS_OPTION_HIGHLIGHT", $product->options) ? "productHighlight" : "");?>">
<? if($contador%2==0){ ?>
<div class="homePromoIn">
<? } ?>
<span><?=$product->idProduct;?> - <?=$product->idObject;?> </span>
<h3><a href="tags/product/<?=$product->reference;?>"><img src="<?=$product->getLargeImage();?>" alt="<?=encodeHtml($product->name);?>" width="130" height="130" /> <span class="pName"><?=cut($product->name, 55, CUT_CHARS);?></span></a> <? if (in_array("ECOMMERCE_PRODUCTS_OPTION_NEW", $product->options) ? "productNew" : "") { ?><span class="newProduct"><?=i18n("newProduct");?></span><? } ?></h3>
<p class="shortDesc"><?=$product->getShortDescription(80, CUT_CHARS);?></p>
<? if (in_array("ECOMMERCE_PRODUCTS_OPTION_BARGAIN", $product->options) && $product->bargainDiscount) { ?>
<p class="price"><span class="oldPrice"><?=$product->getOldPrice();?></span> <?=$product->getPrice();?><? if ($xopie->includeTax) { ?> <span class="priceTax">(<?=i18n("taxesIncluded", $xopie->taxName);?>)</span><? } ?></p>
<? } else { ?>
<p class="price"><?=$product->getPrice();?><? if ($xopie->includeTax) { ?> <span class="priceTax">(<?=i18n("taxesIncluded", $xopie->taxName);?>)</span><? } ?></p>
<? } ?>
<? if($contador%2==0){ ?></div><? } ?>
</div>
<? } ?>
Prueba con esto a ver que tal. Lo que hago es un contador, y si el residuo de la division entre 2 de ese contador es 1 no habro ningun div, y si es 0 lo habro, asi una vez abre un div la siguiente no, y etc.
Espero que funcione
PD: no se porque en el 1º if me sale esa cosa extraña, en teoria tienes que salir %2==0