En fait, ce select est utilisé pour construire la combinaison de déclinaisons ( = le product sale element) qui sera ajoutée au panier. Pour la remplacer par des radio (pas des checkbox), tu peux remplacer tout ce code
{form_field field='product_sale_elements_id'}
<input id="pse-id" class="pse-id" type="hidden" name="{$name}" value="{$PRODUCT_SALE_ELEMENT}" {$attr} >
{/form_field}
{if $pse_count > 1}
{* We have more than 1 combination: custom form *}
<fieldset id="pse-options" class="product-options">
{loop name="attributes" type="attribute" product="$product_id" order="manual"}
<div class="option option-option">
<label for="option-{$ID}" class="option-heading">{$TITLE}</label>
<div class="option-content clearfix">
<select id="option-{$ID}" name="option-{$ID}" class="form-control input-sm pse-option" data-attribute="{$ID}"></select>
</div>
</div>
{/loop}
<div class="option option-fallback">
<label for="option-fallback" class="option-heading">{intl l="Options"}</label>
<div class="option-content clearfix">
<select id="option-fallback" name="option-fallback" class="form-control input-sm pse-option pse-fallback" data-attribute="0"></select>
</div>
</div>
</fieldset>
{/if}
Par celui-ci :
{form_field field='product_sale_elements_id'}
{if $pse_count > 1}
{loop name="pse" type="product_sale_elements" product=$product_id}
<div class="radio">
<label>
<input type="radio" name="{$name}" value="{$ID}" {if $QUANTITY <= 0}disabled{/if}/>
{loop name="combi" type="attribute_combination" product_sale_elements="$ID" order="manual"}
{$ATTRIBUTE_TITLE} : {$ATTRIBUTE_AVAILABILITY_TITLE} {if $LOOP_COUNT < $LOOP_TOTAL},{/if}
{/loop}
Prix:
{if $IS_PROMO}
{format_money number=$PROMO_PRICE symbol={currency attr="symbol"}}
{else}
{format_money number=$PRICE symbol={currency attr="symbol"}}
{/if}
{if $QUANTITY <= 0}
Rupture de stock
{else}
En stock
{/if}
</label>
</div>
{/loop}
{else}
<input id="pse-id" class="pse-id" type="hidden" name="{$name}" value="{$PRODUCT_SALE_ELEMENT}" {$attr} >
{/if}
{/form_field}
Tu devra aussi mettre en commentaire ou supprimer tout le code (33 lignes) entre {* javascript confiuguration to display pse *}
et </script> pour éviter des effets de bord avec le code javascript qui gérait les select.
Tu devras aussi t'arranger pour gérer le prix et le stock affiché, soit avec un peu de Javascript, soit en l'affichant uniquement dans la liste des combinaisons (ce que j'ai fait de manière assez sommaire dans mon code).