Câmpuri multiple de introducere pentru variații multiple de produse în WooCommerce

24 ian. 2013, 16:04:26
Vizualizări: 14.7K
Voturi: 0

Încerc să personalizez tema implicită WooCommerce conform nevoilor mele.

Am un produs care vine în două variații: este vorba despre vin, așadar variația A este un pachet cu 6 sticle, iar variația B este un caz de lemn cu 12 sticle.

Aș dori să am un dublu câmp de introducere text lângă produs care să-mi permită să le adaug în coșul de cumpărături.

Ceva asemănător cu ceea ce poți vedea în această imagine (ignoră numerele, sunt doar aleatorii în design ;) ):

dublu câmp de introducere

Momentan am reușit să am doar un singur câmp text care îmi permite să adaug doar o singură variație, SAU un buton care mă trimite la pagina de detaliu a produsului cu un meniu derulant care îmi permite să selectez una din cele două variații.

Dar aș dori să fac asta direct pe pagina de catalog (arhivă), și nu cu un meniu derulant, ci cu 2 câmpuri de introducere diferite.

Poți să mă ajuți cu asta? Se pare că personalizarea WooCommerce nu este atât de ușoară... :(

Momentan încerc să editez fișierul content-product.php, am comentat unele acțiuni "implicite" woocommerce pentru a-l personaliza cu codul meu. Acesta este fișierul meu actual content-product.php dar afișează doar un singur câmp de introducere pentru o singură variație a produsului.

<?php
/**
 * Șablonul pentru afișarea conținutului produsului în bucle.
 *
 * Suprascrie acest șablon copiindu-l în yourtheme/woocommerce/content-product.php
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     1.6.4
 */

global $product, $woocommerce_loop;

// Stochează numărul buclei curente
if ( empty( $woocommerce_loop['loop'] ) )
    $woocommerce_loop['loop'] = 0;

// Stochează numărul de coloane pentru afișarea grilei
if ( empty( $woocommerce_loop['columns'] ) )
    $woocommerce_loop['columns'] = apply_filters( 'loop_shop_columns', 4 );

// Asigură vizibilitatea
if ( ! $product->is_visible() )
    return;

// Crește numărul buclei
$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="Mai multe detalii" class="read-more-link">Mai multe detalii</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>(Minimum 6 sticle, prețul este calculat<br />pe baza costului pe sticlă de $15.95)</p>

            <button type="submit" class="button alt">Adaugă în coș</button> <a href="<?php echo $woocommerce->cart->get_cart_url(); ?>" class="button-link">Finalizează comanda</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
Comentarii

Exemple de cod despre ce ai încercat până acum ar fi utile, împreună cu o descriere a modului în care abordezi problema. (de ex. am modificat fișierul x, am adăugat în funcțiile temei mele)

Steve Steve
24 ian. 2013 16:13:32

mulțumesc. ai dreptate! am adăugat codul la care lucrez! ;)

stefano1 stefano1
24 ian. 2013 16:31:17
Toate răspunsurile la întrebare 2
2

Doar o informație pentru ceilalți care au dat peste asta: Am reușit să obțin acest lucru folosind Produse Grupate în loc de Variante. Pur și simplu adaugă produsul principal (în acest caz, Vinul) ca 'Produs Grupat'. Apoi, adaugă cele 2 dimensiuni de cază ca produse simple, iar în fila 'Avansat', selectează produsul grupat din meniul derulant 'Grupare'.

Am obținut o pagină care arată așa.

Sper că acest lucru este util cuiva.

30 ian. 2013 21:47:47
Comentarii

inteligent! :) lasă-mă să încerc!

stefano1 stefano1
31 ian. 2013 10:56:23

Salut David, ce faci dacă toate produsele tale sunt de același tip - adică ar trebui să fie atribuite cu aceleași variații? De exemplu, am un alt produs numit Bere și ar trebui să conțină atât variația "șase sticle" cât și "cutie", ai vreo idee cum să realizez asta? Momentan singura metodă la care mă pot gândi este să duplic variațiile și să le atribui produsului grup Bere, ceea ce nu are sens pentru că ai putea ajunge cu sute de produse simple (în acest caz, variații) duplicate.

jilseego jilseego
22 mar. 2013 09:13:28
3

Dacă urmați procesul recomandat pentru personalizarea WooCommerce, ar trebui să fiți copiat toate fișierele WooCommerce pe care trebuie să le modificați în folderul temei. Doar în caz că nu aveți acest proces, iată un link către documentație.

Din experiența mea cu WooCommerce, aș sugera să analizați fișierul ../woocommerce/single-product/add-to-cart/variable.php, după ce l-ați copiat în tema dumneavoastră, desigur.

Acesta este fișierul care generează formularul 'adaugă în coș' pentru produsele variabile, atât pe pagina de produs individual cât și pe pagina de categorie.

Rețineți că formularul este condus prin AJAX și este posibil să fie nevoie să analizați și codul jQuery asociat pentru a vă atinge obiectivele.

De fapt am făcut asta înainte dar nu-mi amintesc pentru ce client/unde. Voi încerca să găsesc fragmentul de cod și să îl postez, dar nu promit când. Din păcate sunt foarte ocupat în următoarele zile.

24 ian. 2013 17:02:33
Comentarii

Da, am toate fișierele copiate în folderul temei mele ;) Și mulțumesc mult, o să mă uit în /woocommerce/single-product/add-to-cart/variable.php să văd dacă reușesc să ating scopul meu!

stefano1 stefano1
24 ian. 2013 17:15:59

Am încercat să creez două formulare diferite pentru fiecare produs din pagina de catalog. Dar nu funcționează.. când dau click pe "adaugă în coș" mă trimite la pagina produsului individual cu mesajul de eroare "Te rog alege opțiunile produsului…". Iată codul pe care l-am folosit: http://pastebin.com/uAxAztwM ai vreo sugestie?

stefano1 stefano1
28 ian. 2013 14:45:38

@Stefano Pot să confirm asta. Se pare că Woocommerce filtrează valorile din formulare care nu sunt adăugate de scripturile lor.. ciudat..

jilseego jilseego
20 mar. 2013 05:45:38