WooCommerce: campi di input multipli per variazioni prodotto multiple

24 gen 2013, 16:04:26
Visualizzazioni: 14.7K
Voti: 0

Sto cercando di personalizzare il tema predefinito di WooCommerce per le mie esigenze.

Ho un prodotto che ha due variazioni: si tratta di vino, quindi la variazione A è un pacco da 6 bottiglie e la variazione B è una cassa di legno da 12 bottiglie.

Vorrei avere un doppio campo di input accanto al prodotto che mi permetta di aggiungerli entrambi al carrello.

Qualcosa di simile a quello che puoi vedere in questa immagine (ignora i numeri, sono solo casuali nel design ;) ):

doppio campo di input per quantità prodotto

Attualmente sono riuscito ad avere solo un singolo campo di input che mi permette di aggiungere solo 1 variazione, OPPURE un pulsante che mi reindirizza alla pagina dettaglio prodotto con un menu a tendina per selezionare una delle due variazioni.

Ma vorrei farlo direttamente nella pagina archivio (catalogo), e non con un menu a tendina, ma con 2 campi di input distinti.

Puoi aiutarmi con questo? Sembra che personalizzare WooCommerce non sia così semplice... :(

Al momento sto provando a modificare content-product.php, ho commentato alcune azioni "predefinite" di WooCommerce per personalizzarlo con il mio codice. Questo è il mio content-product.php attuale ma mostra solo un singolo campo di input per una sola variazione del prodotto.

<?php
/**
 * Template per visualizzare il contenuto del prodotto all'interno dei loop
 *
 * Sovrascrivi questo template copiandolo in yourtheme/woocommerce/content-product.php
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     1.6.4
 */

global $product, $woocommerce_loop;

// Memorizza il conteggio del loop corrente
if ( empty( $woocommerce_loop['loop'] ) )
    $woocommerce_loop['loop'] = 0;

// Memorizza il numero di colonne per visualizzare la griglia
if ( empty( $woocommerce_loop['columns'] ) )
    $woocommerce_loop['columns'] = apply_filters( 'loop_shop_columns', 4 );

// Verifica la visibilità
if ( ! $product->is_visible() )
    return;

// Incrementa il conteggio del loop
$woocommerce_loop['loop']++;
?>
<li class="product-catalog <?php
    if ( $woocommerce_loop['loop'] % $woocommerce_loop['columns'] == 0 )
        echo 'last';
    elseif ( ( $woocommerce_loop['loop'] - 1 ) % $woocommerce_loop['columns'] == 0 )
        echo 'first';
    ?>">

    <?php do_action( 'woocommerce_before_shop_loop_item' ); ?>

        <?php
            /**
             * woocommerce_before_shop_loop_item_title hook
             *
             * @hooked woocommerce_show_product_loop_sale_flash - 10
             * @hooked woocommerce_template_loop_product_thumbnail - 10
             */
            //do_action( 'woocommerce_before_shop_loop_item_title' );
        ?>
        <?php echo get_the_post_thumbnail( $post->ID, 'shop_catalog'  ) ?>
        <h3 class="section-title"><?php the_title(); ?></h3>
        <?php the_excerpt(); 
        echo '<div class="more-link-container"><a href="'.get_permalink($loop->post->ID).'" title="Dettagli" class="read-more-link">Dettagli</a>  <span class="link-arrow">&raquo;</span></div>'
        ?>
        <form action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" class="cart" method="post" enctype='multipart/form-data'>
            <?php woocommerce_quantity_input(); ?>

            <p>(Minimo 6 bottiglie, il prezzo è calcolato<br />su un costo per bottiglia di $15.95)</p>

            <button type="submit" class="button alt">Aggiungi al carrello</button> <a href="<?php echo $woocommerce->cart->get_cart_url(); ?>" class="button-link">Vai al carrello</a>

        </form>
        <?php
            /**
             * woocommerce_after_shop_loop_item_title hook
             *
             * @hooked woocommerce_template_loop_price - 10
             */
            //do_action( 'woocommerce_after_shop_loop_item_title' );
        ?>

    <?php //do_action( 'woocommerce_after_shop_loop_item' ); ?>

</li>
2
Commenti

Esempi di codice di ciò che hai provato finora sarebbero utili, insieme a una descrizione di come stai procedendo. (ad esempio, modificato il file x, aggiunto alle funzioni del mio tema)

Steve Steve
24 gen 2013 16:13:32

grazie. hai ragione! ho aggiunto il codice su cui sto lavorando! ;)

stefano1 stefano1
24 gen 2013 16:31:17
Tutte le risposte alla domanda 2
2

Solo un'informazione per altre persone che hanno trovato questo: sono riuscito a ottenere questo risultato utilizzando Prodotti raggruppati invece delle Varianti. Basta aggiungere il prodotto principale (il Vino, in questo caso) come 'Prodotto raggruppato'. Poi, aggiungi le 2 dimensioni della confezione come prodotto semplice e, nella scheda 'Avanzate', seleziona il prodotto raggruppato dal menu a discesa 'Raggruppamento'.

Alla fine ho ottenuto una pagina che assomiglia a questa.

Spero che questo sia utile a qualcuno.

30 gen 2013 21:47:47
Commenti

intelligente! :) fammi provare!

stefano1 stefano1
31 gen 2013 10:56:23

Ciao David, cosa succede se tutti i tuoi prodotti sono dello stesso tipo - cioè dovrebbero essere tutti assegnati con le stesse variazioni? Ad esempio, ho un altro prodotto chiamato Birra e dovrebbe contenere entrambe le variazioni "sei bottiglie" e "cassa", hai qualche idea su come realizzarlo? Al momento l'unico modo che mi viene in mente è duplicare le variazioni e assegnarle al prodotto raggruppato Birra, il che non ha senso perché potresti finire con centinaia di prodotti semplici duplicati (in questo caso, variazioni).

jilseego jilseego
22 mar 2013 09:13:28
3

Se stai seguendo il processo consigliato per personalizzare WooCommerce, dovresti aver copiato tutti i file di WooCommerce che necessitano di modifiche nella cartella del tuo tema. Nel caso non l'avessi fatto, ecco un link alla documentazione.

Dalla mia esperienza con WooCommerce, suggerirei di esaminare il file ../woocommerce/single-product/add-to-cart/variable.php, dopo averlo copiato nel tuo tema ovviamente.

Questo è il file che genera il modulo 'aggiungi al carrello' per i prodotti variabili, sia nella pagina del singolo prodotto che nella pagina della categoria.

Tieni presente che il modulo è gestito via AJAX e potresti dover esaminare anche il codice jQuery associato per raggiungere i tuoi obiettivi.

In realtà ho già fatto questa modifica in passato ma non ricordo per quale cliente. Cercherò di trovare lo snippet di codice e pubblicarlo, ma non posso garantire quando. Purtroppo sono sommerso di lavoro per i prossimi giorni.

24 gen 2013 17:02:33
Commenti

Sì, ho copiato tutti i file nella cartella del mio tema ;) E grazie mille, darò un'occhiata a /woocommerce/single-product/add-to-cart/variable.php per vedere se riesco a raggiungere il mio obiettivo!

stefano1 stefano1
24 gen 2013 17:15:59

Ho provato a creare due form diversi per ogni prodotto nella pagina del catalogo. Ma non funziona... quando clicco su "aggiungi al carrello" mi porta alla pagina del prodotto singolo con il messaggio di errore "Scegli le opzioni del prodotto…". Ecco il codice che ho usato: http://pastebin.com/uAxAztwM hai qualche consiglio?

stefano1 stefano1
28 gen 2013 14:45:38

@Stefano Posso confermare. Sembra che Woocommerce stia filtrando i valori del form che non sono aggiunti dai loro script.. strano..

jilseego jilseego
20 mar 2013 05:45:38