Bene, anche questa è andata.
La vendita per multipli non è gestita nativamente da VM allora occorre ricorrere a qualche trucchetto.
Come prima cosa si devono seguire alcune semplici (e migliorabili) indicazioni contenute qui:
http://forum.joomla.it/index.php/topic,107993.msg476988.html#msg476988Dopo questo dobbiamo utilizzare un piccolo trucchetto che consiste nel lavorare sulla variabile $quantity_start che normalmente servirebbe solo nel caso dell'impiego di una casella combinata al posto della casella di testo della quantità.
1. Definiamo la variabile $quantity_start per tutti quei prodotti che devono essere incrementati oltre l'unità.
Lo possiamo fare manualmente dal back-end di VM Lista prodotti/Opzioni di visualizzazione/Valore iniziale oppure serialmente tramite CSV Im proved.
2. Apriamo il file quantity_box_general.tpl.php
3. All'inizio del file, dopo
extract( $quantity_options ); facciamo in modo che la variabile $quantity_start sia impostata a 1 se non diversamente specificato da noi:
if ($quantity_start == 0) {
$quantity_start = 1;
}
Senza questo blocco if dovremmo impostare a Valore iniziale = 1 per tutti i prodotti che vengono venduti a multipli di 1... e la cosa è abbastanza inutile.
4. Impostiamo il valore predefinito della quantità iniziale di acquisto sostituendo
$html .= '<input type="text" class="inputboxquantity" size="4" id="quantity'.$prod_id.'" name="quantity[]" value="'.$quantity.'"
con:
$html .= '<input type="text" style="float:left" class="inputboxquantity" size="4" id="quantity'.$prod_id.'" name="quantity[]" value="'.$quantity_start.'" />
5. Modifichiamo l'incremento sostituendo
qty_el.value++ con:
qty_el.value=parseInt(qty_el.value,10) +'.$quantity_start.'
A titolo di curiosità specificare la conversione in base 10 serve se un utente scrive manualmente nella casella di quantità un numero che inizia per zero.
6. Modifichiamo il decremento sostituendo
qty_el.value-- con:
qty_el.value=parseInt(qty_el.value,10) -'.$quantity_start.'
A questo punto la Browse Page presenterà come quantità predefinita di acquisto il valore da noi specificato.
Incrementi e decrementi tramite i pulsantini accanto alla quantità non saranno necessariamente di 1 unità, ma del valore da noi specificato.
Questo è il mio quantity_box_general.tpl.php con le modifiche
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
mm_showMyFileName(__FILE__);
/** This template is used for the quantity box arrangement of products, within the add-to-cart form */
// Contiene le modifiche per incrementare il carrello di multipli
// Info su http://forum.joomla.it/index.php/topic,120776.0
extract( $quantity_options );
$html = '';
// mostra l'etichetta di testo della quantita'
if(!$child && $display_type != 'hide') {
$html = '<label for="quantity'.$prod_id.'" class="quantity_box">'.$VM_LANG->_('PHPSHOP_CART_QUANTITY').': </label>';
}
// $quantity_start la uso per gli incrementi
// se non è stata definita deve valere 1
if ($quantity_start == 0) {
$quantity_start = 1;
}
switch($display_type) {
// con radio box non ho testato
case "radio" : //Radio Box
$html .= '<input type="hidden" id="quantity'.$prod_id.'" name="quantity[]" value="'.$quantity.'" />';
$html .= '<input type="radio" class="quantitycheckbox" id="selItem'.$prod_id.'" name="selItem" value="0" ';
if ($quantity > 0 ) {
$html .= 'checked="checked" ';
}
$html .= 'onclick="alterQuantity(this.form)" />';
break;
case "hide" : // Hide box - but set quantity to 1!
$html .= '<input type="hidden" id="quantity'.$prod_id.'" name="quantity[]" value="1" />';
break;
// con check box non ho testato
case "check" :
$html .= '<input type="hidden" id="quantity'.$prod_id.'" name="quantity[]" value="'.$quantity.'" style="vertical-align: middle;"/>
<input type="checkbox" class="quantitycheckbox" id ="selItem'.$id.'" name="check[]" ';
if ($quantity > 0 ) {
$html .= 'checked="checked"';
}
$html .= ' value="1" onclick="javascript: if(this.checked==true) document.getElementById(\'quantity'.$prod_id.'\').value = 1; else {document.getElementById(\'quantity'.$prod_id.'\').value=0;} "/> ';
break;
// con la casella di controllo non ho testato
case "drop" :
$code = '<select class="inputboxquantity" id="quantity'.$prod_id.'" name="quantity[]">';
for($i=$quantity_start;$i<$quantity_end+1;$i += $quantity_step) {
$code .= ' <option value="'.$i.'"';
if ($i == $quantity) {
$code .= ' selected="selected"';
}
$code .= '>'.$i."</option>\n";
}
$code .= "</select>\n";
$html .= $code;
break;
// con la input box funziona
case "none" :
default:
$html .= '<input type="text" style="float:left" class="inputboxquantity" size="4" id="quantity'.$prod_id.'" name="quantity[]" value="'.$quantity_start.'" />
<input type="button" class="quantity_box_button quantity_box_button_up" onclick="var qty_el = document.getElementById(\'quantity'.$prod_id.'\'); var qty = qty_el.value; if( !isNaN( qty )) qty_el.value=parseInt(qty_el.value,10) +'.$quantity_start.';return false;" />
<input type="button" class="quantity_box_button quantity_box_button_down" onclick="var qty_el = document.getElementById(\'quantity'.$prod_id.'\'); var qty = qty_el.value; if( !isNaN( qty ) && qty > 0 ) qty_el.value=parseInt(qty_el.value,10) -'.$quantity_start.';return false;" />
';
break;
}
echo $html;
?>