En ocasiones necesitamos que algunos productos se compren por ejemplo de 5 en 5. Creo que la mejor solución y más sencilla es realizar los siguientes paso:

  • Lo primero es irnos al Admin/Catálogo/Características y añadimos una nueva característica llamada por ejemplo Multiplo.
  • Luego crearemos los valores que necesitemos a la característica creada, por ejemplo 5
  • Nos vamos las características del producto que vayamos a utilizar para este menester, asignamos el valor 5 a múltiplo y guardamos

Ahora vamos a modificar product.tpl para mostrar un combo si la característica múltiplo tiene algún valor.

Al inicio de product.tpl buscamos la característica Multiplo del producto y declaramos la variable multiplo con su valor.

{foreach from=$features item=feature}
    {if $feature.name=='Multiplo'}
    	{assign var=multiplo value=$feature.value}
    {/if}
{/foreach}

Buscamos donde se encuentra el input de la cantidad (id=quantity_wanted) y sustituimos:

<input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}1{/if}" size="2" maxlength="3" />

Por:

     {if $multiplo!=''}
      	<select name="qty" id="quantity_wanted" >
        {section name=foo start=$multiplo loop=100 step=$multiplo}
            {assign var=box_qty value=$smarty.section.foo.index}
            <option value="{$box_qty}" {if isset($quantityBackup)}{if $quantityBackup == $box_qty}selected="selected"{/if}{/if}>{$box_qty}</option>
          {$smarty.section.foo.index}
        {/section}
        </select>
      {else}
      	<input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}1{/if}" size="2" maxlength="3" />
      {/if}

Con estas líneas conseguimos que solo se muestre el combo con el multiplicador en los productos que tengan la característica definida para ese fin. Y mediante la función section definimos el bucle.

Ah!! y recordar que también puedes modificar el número de productos en los ficheros del tema shopping-cart.tpl y shopping-cart-product-line.tpl, en los enlaces con las clase cart_quantity_up y cart_quantity_down.

Bueno creo que esta es la mejor opción, si alguien se anima o tiene otra, ya sabe que aquí tiene un espacio…