2

I am trying to tweak Wordpress Jigoshop according to my customer's needs and I got a bit stuck. What I need is: when a product variation is selected, some additional options appear in the form of radio buttons which customers must chose. I've managed to get everything working, but what I need now is to send the selected radio button to the cart, checkout and so on when the submit button is clicked.

I am trying to use their product customization function to do this and their function is:

    if (!function_exists('jigoshop_product_customize_panel')) {
    function jigoshop_product_customize_panel() {
        global $_product;

    if ( isset( $_POST['Submit'] ) && $_POST['Submit'] == 'Save Personalization' ) {
        $custom_products = (array) jigoshop_session::instance()->customized_products;
        $custom_products[$_POST['customized_id']] = trim( wptexturize( $_POST['jigoshop_customized_product'] ));
        jigoshop_session::instance()->customized_products = $custom_products;
    }

    if ( get_post_meta( $_product->ID , 'customizable', true ) == 'yes' ) :
        $custom_products = (array) jigoshop_session::instance()->customized_products;
        $custom = isset( $custom_products[$_product->ID] ) ? $custom_products[$_product->ID] : '';
        $custom_length = get_post_meta( $_product->ID , 'customized_length', true );
        $length_str = $custom_length == '' ? '' : sprintf( __( 'You may enter a maximum of %s characters.', 'jigoshop' ), $custom_length );

        echo '<div class="panel" id="tab-customize">';
        echo '<p>' . apply_filters('jigoshop_product_customize_heading', __('Enter your personal information as you want it to appear on the product.<br />'.$length_str, 'jigoshop')) . '</p>';

        ?>

            <form action="" method="post">

                <input type="hidden" name="customized_id" value="<?php echo esc_attr( $_product->ID ); ?>" />

                <?php
                if ( $custom_length == '' ) :
                ?>
                    <textarea
                        id="jigoshop_customized_product"
                        name="jigoshop_customized_product"
                        cols="60"
                        rows="4"><?php echo esc_textarea( $custom ); ?>
                    </textarea>
                <?php else : ?>
                    <input 
                        type="text"
                        id="jigoshop_customized_product"
                        name="jigoshop_customized_product"
                        size="<?php echo $custom_length; ?>"
                        maxlength="<?php echo $custom_length; ?>"
                        value="<?php echo esc_attr( $custom ); ?>" />
                <?php endif; ?>

                <p class="submit"><input name="Submit" type="submit" class="button-alt add_personalization" value="<?php _e( "Save Personalization", 'jigoshop' ); ?>" /></p>

            </form>

        <?php
        echo '</div>';
    endif;
}
}

I tried modifying their function to suit my needs and this is what I've come up with (where get_cod is the id and name of the hidden input and "Adauga in cos" is the value of my submit button):

if (!function_exists('salveaza_cod_material')) {
function salveaza_cod_material() {
    global $_product;

    if ( isset( $_POST['submit']) && $_POST('submit') == 'Adauga in cos') {
        $custom_products = (array) jigoshop_session::instance()->customized_products;
        $custom_products[$_POST['customized_id']] = trim( wptexturize( $_POST['get_cod'] ));
        jigoshop_session::instance()->customized_products = $custom_products;
    }

        $custom_products = (array) jigoshop_session::instance()->customized_products;
        $custom = isset( $custom_products[$_product->ID] ) ? $custom_products[$_product->ID] : '';
}}

However the value isn't sent to the next page. Can anybody please help? Cheers!

Here's an update containing more of the code:

<form action="<?php echo esc_url( $_product->add_to_cart_url() ); ?>"     class="variations_form cart" method="post">
        <fieldset class="variations">
            <?php foreach ( $attributes as $name => $options ): ?>
                <?php $sanitized_name = sanitize_title( $name ); ?>
                <div>
                    <span class="select_label"><?php echo jigoshop_product::attribute_label('pa_'.$name); ?></span>

                    <select id="<?php echo esc_attr( $sanitized_name ); ?>" name="tax_<?php echo $sanitized_name; ?>">

                        <option value=""><?php echo __('Choose an option ', 'jigoshop') ?>&hellip;</option>
                        <?php foreach ( $options as $value ) : ?>
                            <?php if ( taxonomy_exists( 'pa_'.$sanitized_name )) : ?>
                                <?php $term = get_term_by( 'slug', $value, 'pa_'.$sanitized_name ); ?>
                                <option value="<?php echo esc_attr( $term->slug ); ?>"><?php echo $term->name; ?> </option>
                            <?php else : ?>
                                <option value="<?php echo esc_attr( sanitize_title( $value ) ); ?>"><?php echo $value; ?></option>
                            <?php endif;?>
                        <?php endforeach; ?>
                    </select>


                </div>
            <?php endforeach;?>
        </fieldset>
<div id="piele-neagra" class="colors" style="display:none"> 
    <ul class="materiale">
    <li><input type="radio" name="piele-neagra" value="L73">
    <p><img class="alignnone size-full wp-image-155" title="L73" src="http://www.scaune-directoriale.ro/wp-content/uploads/materiale/piele-neagra/L73.gif" alt="L73" width="72" height="72" /></p>
    </li>
    </ul> 
</div>

<div id="stofa-mf" class="colors" style="display:none"> 
    <ul class="materiale">

    <li><input type="radio" name="tapiterie" value="MF01" />


...


 <div id="stofa-rg" class="colors" style="display:none"> Stofa RG</div>
        <div class="clear"></div>

        <span id="cod_material"><?php echo esc_attr( $custom ); ?></span>
        <span><?php echo trim( wptexturize( $_POST['get_cod'] )); ?></span>
        <div class="single_variation"></div>





        <?php do_action('jigoshop_before_add_to_cart_form_button'); ?>
        <div class="variations_button" style="display:none;">
            <input type="hidden" name="variation_id" value="" />
             <input type="hidden" name="customized_id" value="<?php echo esc_attr( $_product->ID ); ?>" />
        <input type="hidden" id="get_cod" name="get_cod" value="" />
            <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
            <div class="quantity"><input name="quantity" value="1" size="4" title="Qty" class="input-text qty text" maxlength="12" /></div>
            <input type="submit" id="submit_cart" class="button-alt" value="<?php esc_html_e('Add to cart', 'jigoshop'); ?>" />
        </div>
        <?php do_action('salveaza_cod_material'); ?>
        <?php do_action('jigoshop_add_to_cart_form'); ?>
    </form>

And this is the section of the cart that receives the value:

if ( !empty( $values['variation_id'] )) {
                                             $product_id = $values['variation_id'];
                                    } else {
                                        $product_id = $values['product_id'];
                                    }
                                        $custom_products = (array) jigoshop_session::instance()->customized_products;
                                    $custom =     isset( $custom_products[$product_id] ) ? $custom_products[$product_id] : '';
                                    if ( !     empty( $custom_products[$product_id] ) ) :
                                        ?>
                                        <dl      class="customization">
                                                <dt class="customized_product_label"><?php echo     apply_filters('jigoshop_customized_product_label', __('Personal: ','jigoshop') ); ?></dt>
                                                <dd class="customized_product"><?php echo esc_textarea( $custom ); ?></dd>
                                             </dl>
                                        <?    php
                                    endif;
                                    ?>
PrestaShopDeveloper
  • 3,110
  • 3
  • 21
  • 30

1 Answers1

0

It's just a typo: in if ( isset( $_POST['submit']) && $_POST('submit') == 'Adauga in cos'), replace $_POST('submit')by $_POST['submit']

maxdec
  • 5,707
  • 2
  • 30
  • 35
  • I probably wrote it wrong in one of my attempts. I corrected it and it still won't send. – Razvan Costica Aug 07 '12 at 12:42
  • Where is the hidden input `get_cod`? – maxdec Aug 07 '12 at 14:42
  • It's in the same form with the submit button. If you want I can post the whole code, but it's pretty large – Razvan Costica Aug 07 '12 at 14:54
  • I'm not proficient in PHP, as you can probably tell, but isn't the cart getting the value from the session using jigoshop_session::instance()->customized_products; ? – Razvan Costica Aug 08 '12 at 08:22
  • Maybe I've done it completely wrong... I just want to use the original function to pass my input value instead of theirs and not use the 'Save Personalization' button, but the 'add to cart'. Can you suggest another way for me to do this? By the way, thanks for the time you've spent on this! – Razvan Costica Aug 08 '12 at 08:25