Indice del forum Zen Cart Italia
Spedizioni e Pagamenti
Come fare una spedizione differenziata per prodotti
| Registrati per inviare messaggi |
| Ad albero | I più nuovi prima | Discussione precedente | Discussione successiva | In fondo |
| Autore | Thread |
|---|---|
![]() |
Inviato il: 17/12/2007 14:27 |
|
Messaggi: 2
Joined: 24/10/2007
Da:
|
Come fare una spedizione differenziata per prodotti Ciao, era un problema di molti e forse l'abbiamo risolto.
Ovvero spedire in maniera differenziata, usando table.php, a seconda dei prodotti. Ecco i passaggi 1) Si duplica table.php (/includes/modules/shipping/table.php) e gli si da un altro nome, ad esempio tablespeciale.php In tablespeciale.php si sostituiscono tutte le variabili table e TABLE con altri nome. Nel nostro caso tablespeciale e TABLESPECIALE (attenzione: la sostituzione deve essere case sensitive) 2) Si fa la stessa cosa del punto 1 con table.php della propria lingua. In questo caso l'italiano (/includes/languages/italian/modules/shipping). Nella descrizione si avrà cura si inserirne una per capire di che categorie stiamo parlando 3) Si aprono di nuovo table.php e tablespeciale.php e si faranno queste sostituzioni: al posto di if (zen_get_shipping_enabled($this->code)) { $this->enabled = ((MODULE_SHIPPING_TABLE_STATUS == 'True') ? true : false); } metteremo in table.php $special_categories = array('2','6','10'); if ( (zen_get_shipping_enabled($this->code)) && (!zen_order_contains_special_categories($special_categories))) { $this->enabled = ((MODULE_SHIPPING_TABLE_STATUS == 'True') ? true : false); } e in tablespeciale.php $special_categories = array('2','6','10'); if ( (zen_get_shipping_enabled($this->code)) && (!zen_order_contains_special_categories($special_categories))) { $this->enabled = ((MODULE_SHIPPING_TABLE_STATUS == 'True') ? true : false); } L'array ('2','6','10') contiene gli ID delle categorie scelte. La prima funzione fa attivare il modulo solo se l'ordine NON contiene prodotti appartenenti alle categorie speciali La seconda, di conseguenza, nel caso inverso. In questa maniera se è attivo il primo, non si attiva il secondo, e viceversa. 3) Si creano due file uguali /includes/functions/extra_functions/extra_functions.php /admin/includes/functions/extra_functions/extra_functions.php con questo codice <?php /** * extra_functions.php * * @package functions * @copyright Copyright 2007 Marco Trotta - Gianluca Nigro * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 * @version $Id: extra_functions.php 4135 2007-12-14 04:25:02Z drbyte $ */ function zen_order_contains_special_categories($special_categories) { global $db, $order; $check_flag = true; for ($i = 0, $n = sizeof($order->products); ($i < $n) && $check_flag; $i++) { $check_categories = false; for ($j = 0, $k = sizeof($special_categories); ($j < $k) && !$check_categories ; $j++) { // if (zen_get_products_category_id($order->products[$i]['id']) == $special_category) { if (zen_product_in_category($order->products[$i]['id'], $special_categories[$j])) { $check_categories = true; } } if (!$check_categories) { $check_flag = false; } } return $check_flag; } ?> A questo punto basta attivare i due moduli, inserire costi di spedizione diversi e inaugurare il nuovo sistema. La funzione zen_order_contains_special_categories funziona solo sulle categorie-padre. Significa che un prodotto è riconosciuto tra le categorie speciali anche se appartiene ad una categoria-figlio dentro la categoria-padre inserita nell'array $special_categories Nel caso si voglia tener conto, invece, delle categorie figlio bisognerà sostituire if (zen_product_in_category($order->products[$i]['id'], $special_categories[$j])) { $check_categories = true; } } con if (zen_product_in_parent_category ($order->products[$i]['id'], zen_get_products_category_id($order->products[$i]['id']), $special_categories[$j])) { $check_categories = true; } } Questa è la soluzione più rapida al problema che hanno molti. Ovviamente ha diversi limiti. Per esempio: 1) Così com'è si possono cambiare le categorie speciali solo nel codice, mentre sarebbe più utile farlo lato web 2) Questa soluzione funziona solo se ho due categorie da tenere in conto. Quelle normali e quelle speciali. Nel caso l'ordine preveda prodotti di entrambe le categorie userà la spedizione normale. Se avete altre esigenze tocca rimettere mano al codice Una possibile soluzione potrebbe essere usare una solo table.php ma stravolgere completamente il senso sei settaggi creando una specie di grammatica di utilizzo. Per esempio [1,2,3]25:8.50,50:5.50 [2,5,6]15:7,20:4 40:8,50:16 Può significare se ci sono solo prodotti delle categorie (o sottocategorie 1, 2 e 3) usa la priam riga. Se ci sono solo prodotti delle categorie (o sottocategorie 2,5 e 6) usa la seconda riga. Per tutto il resto usa l'ultima riga Ma ovviamente a quel punto bisogna cambiare buona parte del codice. Se viene implementato, però, come sempre spedite nel forum le modifiche secondo la specifica della GPL |
![]() |
Inviato il: 26/2/2008 13:50 |
|
Messaggi: 119
Joined: 5/3/2007
Da:
|
Re: Come fare una spedizione differenziata per prodotti ciao
ho provato la modifica e funziona tutto. Ho un problema però. nel caso in cui un cliente acquista un prodotto inserito nelle categorie "speciali" ed uno inserito nelle categorie "normali", vengono visualizzati i metodi di spedizione "normali". invece dovrebbero essere visualizzati quelli "speciali". Come è possibile ovviare a questo? e quindi far visualizzare le spedizioni speciali?? grazie |
![]() |
Inviato il: 25/3/2008 11:49 |
|
Messaggi: 11
Joined: 12/3/2008
Da:
|
Re: Come fare una spedizione differenziata per prodotti salve scusate se mi intrufolo nella discussione, però nn ho benc apito una cosa, questo sistema appena descritto imposta le spese spese di spedizione diverse a seconda del prodotto?? cioè se io ho 10 prodotti e voglio spedirli ognuno con una spesa differente devo utilizzare questo metodo??? e se combino i prodotti? o meglio se il cliente acquista più prodotti con diverse spese di spedizione, queste si sommano o cosa accade??? per favore illuminatemi perchè non riesco a capire.
|
![]() |
Inviato il: 25/3/2008 15:19 |
|
Messaggi: 119
Joined: 5/3/2007
Da:
|
Re: Come fare una spedizione differenziata per prodotti ciao
il metodo su descritto, consente di applicare particolari metodi di spedizione a tutti i prodotti contenuti in determinate categorie, pertanto con questo metodo puoi impostare un metodo di spedizione a "categorie di prodotti" e non a singoli prodotti. Per quanto riguarda la combinazione dei prodotti, nel caso in cui un cliente acquista un prodotto di categoria normale ed uno di categoria speciale, vengono visualizzate le spese di spedizione della categoria speciale. |
![]() |
Inviato il: 25/3/2008 16:33 |
|
Messaggi: 11
Joined: 12/3/2008
Da:
|
Re: Come fare una spedizione differenziata per prodotti ho capito, grazie. é invece possibile applicare proprio spese diverse per singolo prodotto? non c'è modo di impostare la spedizione già al momento in cui configuro prezzi iva ecc nel prodotto?
|
![]() |
Inviato il: 25/3/2008 19:11 |
|
Messaggi: 119
Joined: 5/3/2007
Da:
|
Re: Come fare una spedizione differenziata per prodotti purtroppo non ho trovato nulla del genere... nemmeno sul forum americano...
|
![]() |
Inviato il: 26/3/2008 14:55 |
|
Messaggi: 10
Joined: 3/1/2008
Da: Assisi
|
Re: Come fare una spedizione differenziata per prodotti Io avrei un problema credo più complesso oltre a differenziare per prodotto mi necessita differenziare per provincia.
Vorremmo utilizzare un vettore con delle tariffe convenienti, ma differenti per province e per tre scaglioni di peso, anche se alcune province hanno tariffe simili le provincie in Italia sono tante. Duplicare table tante volte quante le province che servono pensate che sia l'unica strada? Qualcuno può aiutarmi? |
![]() |
Inviato il: 26/3/2008 15:24 |
|
Messaggi: 119
Joined: 5/3/2007
Da:
|
Re: Come fare una spedizione differenziata per prodotti ciao...
forse la risoluzione del tuo problema è più facile di quanto sembri... Però devi verificare personalmente.... Il modulo di spedizione di zencart già ti consente di differenziare le spese di spedizione per singola provincia... Di conseguenza penso che dovrai limitarti a seguire il procedimento sopra riportato per differenziare le spese di spedizione per "prodotto", dopodiché dovrai ri-settare le spese di sped per ogni provincia... non so se sono stato chiaro... |
![]() |
Inviato il: 25/5/2008 16:33 |
|
Messaggi: 10
Joined: 3/1/2008
Da: Assisi
|
Re: Come fare una spedizione differenziata per prodotti Ritorno sul tema delle spedizioni con costi diversi per le varie province.
Come posso duplicare il modulo table per ottenere prezzi per una determinata zona- provincia. Ho provato a duplicare table.php e rinominarlo ma si verificano errori. Praticamente dovrei creare tanti moduli quante sono le province e allo stesso tempo quando il peso supera i trenta kg o i 50 delle poste il sistema dovrebbe proporre i costi assegnati per le varie province di destinazione automaticamente. Qualcuno ha già provato alla duplicazione del modulo richiamato? |
![]() |
Inviato il: 31/5/2008 18:39 |
|
Messaggi: 40
Joined: 24/6/2006
Da:
|
Re: Come fare una spedizione differenziata per prodotti Ho provato ma mi funziona... o meglio...
se ho in carrello solo prodotti di categoria speciale va, se metto altri prodotti mi da il prezzo categoria normale e speciale da scegliere. entrambi i moduli (quello nuovo e quello modiifcato) mi danni nella configurazioni moduli spedizioni il pallino giallo... ho notato se il primo prodotto in carrello è della categoria speciale mi da la spedizione corretta (cioè il pre duezzo della categoria speciale) quindi deduco non mi faccia bene qualche controllo. Ho provato a rifare il tutto ma senza ottenere risultati migliori. potreste postare i file che avete fatto? forse sbaglio qualcosa. Grazie Mirco |
| (1) 2 » | |
| Ad albero | I più nuovi prima | Discussione precedente | Discussione successiva | Top |
| Registrati per inviare messaggi | |









