Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Калькулятор товара в интерфейсе интернет магазина

Тема в разделе "Ищу плагин, функционал", создана пользователем tutsnew, 7 апр 2014.

  1. Grollem

    Grollem

    Сообщения:
    141
    Симпатии:
    47
    Баллы:
    28
    Вот мое решение:
    1. Ставим ACF. Товарам добавляем чек бокс товар с калькулятором.
    2. В шаблоне отвечающим за вывод товара single-product.php пишем условие если есть галочка
    то:
    - показываем калькулятор и скрываем цену и кнопку добавить в корзину.
    - добавляем код вашего калькулятора например на JS или шорткод WPCC
    создаем форму
    - считаем свой алгоритм как захотим результат записываем в скрытое поле.
    - так же записываем id текущего товара в скрытое поле.
    оправляем форму
    и выполняем следующий код.
    add_product_to_cart() - при выполнении добавляет товар с id в корзину.
    add_custom_price() - меняет цену товара на выбранную
    Код:
    if (isset($_POST['my_calc_form'])) {//Если форма была отправлена
    
    add_action( 'init', 'add_product_to_cart' );
    function add_product_to_cart() {
        if ( ! is_admin() ) {
            global $woocommerce;
            $product_id = 21; // здесь переменная из скрытого поля с id товара
            $found = false;
            //check if product already in cart
            if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {
                foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
                    $_product = $values['data'];
                    if ( $_product->id == $product_id )
                        $found = true;
                }
                // if product not found, add it
                if ( ! $found )
                    $woocommerce->cart->add_to_cart( $product_id );
            } else {
                // if no products in cart, add it
                $woocommerce->cart->add_to_cart( $product_id );
            }
        }
    }
    add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
    
    
    function add_custom_price( $cart_object ) {
        $custom_price = 10; // тут цена которую вы насчитали в калькуляторе
        $target_product_id = 21; // здесь переменная из скрытого поля с id товара
        foreach ( $cart_object->cart_contents as $key => $value ) {
            if ( $value['product_id'] == $target_product_id ) {
                $value['data']->price = $custom_price;
            }
            /*
            // If your target product is a variation
            if ( $value['variation_id'] == $target_product_id ) {
                $value['data']->price = $custom_price;
            }
            */
        }
    }
    }
     
    Последнее редактирование: 22 янв 2015
  2. Grollem

    Grollem

    Сообщения:
    141
    Симпатии:
    47
    Баллы:
    28
    после данных манипуляций товар с расчитанной ценой добавиться в корзину
     
  3. D&B

    D&B Администратор Команда форума Местный

    Сообщения:
    3.279
    Симпатии:
    726
    Баллы:
    113
    Grollem для вставки кода есть кнопка Вставить - Код :cool:
     
    • Согласен Согласен x 1
  4. pagemaster

    pagemaster

    Сообщения:
    30
    Симпатии:
    11
    Баллы:
    8
    Подскажите, пожалуйста, как можно перезаписать само значение regular_price на свое значение, можно даже на уровне БД. Мой пост
    [​IMG]
    Цену я уже знаю как вытягивать и умножать на курс, осталось только записать значение в "Базовая цена"
     
    Последнее редактирование: 8 окт 2015
  5. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Примерно так
    PHP:
    update_post_meta$product_id'_regular_price'$my_regular_price );
     
  6. pagemaster

    pagemaster

    Сообщения:
    30
    Симпатии:
    11
    Баллы:
    8
    Что то не пашет(( вот пример товара, там вывел custom_price - это значение, которое должно подставиться в _regular_price
     
  7. pagemaster

    pagemaster

    Сообщения:
    30
    Симпатии:
    11
    Баллы:
    8
    Может так как продукт - это таксономия (а не пост), то нужно использовать что то другое?
     
  8. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Вы откуда сделали такое заключение, что товар - это таксономия?
    Расшифровка из оф. документации.
    • Товар - пост с типом 'product'.
    • Категория товаров - таксономия 'product_cat'.
    • Метки товара - таксономия 'product_tag'.
    • Вариация товара - пост с типом 'product_variation'.
    • Заказ - пост с типом 'shop_order'.
    • Статусы товара - таксономия 'shop_order_status'.
    • Купоны - пост с типом 'shop_coupon'.
     
  9. pagemaster

    pagemaster

    Сообщения:
    30
    Симпатии:
    11
    Баллы:
    8
    значит ошибся, я просто знал что категории woocommerce это таксономии... подумал по аналогии что и товары также.
     
  10. pagemaster

    pagemaster

    Сообщения:
    30
    Симпатии:
    11
    Баллы:
    8
    Последнее редактирование: 8 окт 2015
  11. zix

    zix

    Сообщения:
    18
    Симпатии:
    2
    Баллы:
    3
    Мой вариант расчета цены с использованием Measurment Price Calculator + Gravity Forms addon for WooCommerce.
    Общая стоимость правильно передайтся корзину, а вот на странице товара отображается цена за единицу измерения:
    [​IMG]
    Подскажите пожалуйста, как можно передать рассчитанное значение в общую стоимость?
     
  12. pagemaster

    pagemaster

    Сообщения:
    30
    Симпатии:
    11
    Баллы:
    8
    попробуйте перезаписать $regular_price на свое значение, как то так:
    PHP:
    update_post_meta$post->ID'_regular_price'$custom_price );
    update_post_meta$post->ID'_price'$custom_price );
    и разве все это (что вы делали кучей плагинов) нельзя было сделать через вариативный товар?
     
  13. zix

    zix

    Сообщения:
    18
    Симпатии:
    2
    Баллы:
    3
    спасибо, сейчас буду пробовать
    У меня как раз вариативный товар, стоимость рассчитывается за квадратный сантиметр плагином Measurment Price Calculator, а следом идут дополнительные опции.
    Может есть еще какие-то способы рассчета для такого товара, я не нашел пока.

    За вывод цены отвечает данная стока
    Код:
    $gform_final_total = $gforms_discount_price ? $gforms_discount_price : $price + $gform_total;
    Переменной $price нужно присвоить значение, которое выдает функция вывода цены из плагина Measurment Price Calculator [​IMG]
    Подскажите пожалуйста как это сделать?
     
    Последнее редактирование: 17 ноя 2015
  14. mazoga

    mazoga

    Сообщения:
    26
    Симпатии:
    5
    Баллы:
    3
    А у вас расчет идет с помощью связки ajax + javascript + php? Просто, чтобы считало цену и переводило, нужно реализовывать такое через ajax, по другому никак. Просто по сути вы как бы заганяете значения в поля, они передадутся потом с помощью php при нажатии на кнопку "Добавить в корзину", но не обновляются, так как информация в статическом виде. Реализуйте с помощью ajax и тогда результат в фоновом режиме будет обновляться при изменении значений.
    Почитайте эту статью: Про Ajax. Может найдете необходимое вам решение.
     
    Последнее редактирование: 18 ноя 2015
    • Нравится Нравится x 1
  15. zix

    zix

    Сообщения:
    18
    Симпатии:
    2
    Баллы:
    3
    Вы правы, спасибо за ссылку - с ajax я к сожалению не имел дела, будет трудно сходу что-то реализовать, скорее всего постараюсь найти обходное решение.
     
  16. smikex

    smikex

    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Получилось привязать вывод из WPCC к woocomerce?
     
  17. zix

    zix

    Сообщения:
    18
    Симпатии:
    2
    Баллы:
    3
    Да, частично получилось - общую сумму не выводит, все остальное работает.
     
    Последнее редактирование: 21 апр 2016
  18. rudnin

    rudnin

    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    подскажите, с помощью какого плагина возможно реализовать - http://enjoyflowers.ru/tyulpany , (карточка товара подгружается справа). То есть при клике на + - меняется количество цветка, и соответственно его стоимость.
     
  19. rudnin

    rudnin

    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    пробую реализовать подобное с помощью этого кода
    Код:
    <?php
    // we are going to hook this on priority 31, so that it would display below add to cart button.
    add_action( 'woocommerce_single_product_summary', 'woocommerce_total_product_price', 31 );
    function woocommerce_total_product_price() {
        global $woocommerce, $product;
        // let's setup our divs
        echo sprintf('<div id="product_total_price" style="margin-bottom:20px;display:none">%s %s</div>',__('Product Total:','woocommerce'),'<span class="price">'.$product->get_price().'</span>');
        echo sprintf('<div id="cart_total_price" style="margin-bottom:20px;display:none">%s %s</div>',__('Cart Total:','woocommerce'),'<span class="price">'.$product->get_price().'</span>');
        ?>
            <script>
                jQuery(function($){
                    var price = <?php echo $product->get_price(); ?>,
                        current_cart_total = <?php echo $woocommerce->cart->cart_contents_total; ?>,
                        currency = '<?php echo get_woocommerce_currency_symbol(); ?>';
                    $('[name=quantity]').change(function(){
                        if (!(this.value < 1)) {
                            var product_total = parseFloat(price * this.value),
                            cart_total = parseFloat(product_total + current_cart_total);
                            $('#product_total_price .price').html( currency + product_total.toFixed(2));
                            $('#cart_total_price .price').html( currency + cart_total.toFixed(2));
                        }
                        $('#product_total_price,#cart_total_price').toggle(!(this.value <= 1));
                    });
                });
            </script>
        <?php
    }
    ?>
    
    взяятого на этой странице - http://reigelgallarde.me/programmin...elected-quantity-on-woocommecre-product-page/
    уважаемые гуру, помогите привести этот код, в код, который в последствии не выпадет после обновлений WC и WP, вставляю этот код в functoins.php, заранее спасибо
     
  20. tuxfighter

    tuxfighter Местный

    Сообщения:
    690
    Симпатии:
    106
    Баллы:
    43
    уж сколько раз твердили миру..... про дочерние темы...
     
    • Согласен Согласен x 3