• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Вариативный товар не добавляется в корзину

royko666

Новичок
Здравствуйте!
Сайт: vsenp.ru
Рабочий товар: http://vsenp.ru/product/mushketer-300-gr/
Проблема: в рабочем товаре выбираем состав, товар с этим составом добавляется в корзину без проблем. Если же выбрать товар на главной странице сайта, нажав на "подробнее", всплывает модальное окно, и выбрать состав там, нажать "в корзину" и перейти туда, то она пустая.
 

D&B

Администратор
Команда форума
Местный
Не вижу вообще никакого выбора в окне. просто список всех конфет. Вообще, ищите проблему в скрипте который выводит ваше окно.
 

royko666

Новичок
Не вижу вообще никакого выбора в окне. просто список всех конфет. Вообще, ищите проблему в скрипте который выводит ваше окно.
Если на главной выбрать товар Мушкетер, 300 г (он вариативный), там есть "Состав"
 

royko666

Новичок
Суть проблемы то ясна - в случае вариативного товара в модальном окне, в корзину не передается параметр вариации (либо не записывается в БД). Скриншот http://joxi.ru/KAxx4Bpi48L9QA
Вопрос, как решить эту проблему.
 

royko666

Новичок
В этом модальном окне этот код (variation-add-to-cart-button.php) выводит кнопку купить в вариативном товаре

<?php
/**
* Single variation cart button
*
* @see https://docs.woocommerce.com/document/template-structure/
* @author WooThemes
* @package WooCommerce/Templates
* @version 2.5.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}

global $product;

do_action( 'woocommerce_before_add_to_cart_form' ); ?>
<div class="woocommerce-variation-add-to-cart variations_button">
<?php if ( ! $product->is_sold_individually() ) : ?>
<?php woocommerce_quantity_input( array( 'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : 1 ) ); ?>
<?php endif; ?>
<button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
<input type="hidden" name="add-to-cart" value="<?php echo absint( $product->id ); ?>" />
<input type="hidden" name="product_id" value="<?php echo absint( $product->id ); ?>" />
<input type="hidden" name="variation_id" class="variation_id" value="0" />




<?php
do_action( 'woocommerce_after_add_to_cart_form' ); ?>
</div>
 

tuxfighter

Гуру
Местный
думаю этот вопрос все таки к тому, кто вам наделал вот все это безобразие....
 

tuxfighter

Гуру
Местный
тогда наверное проще поставить нормальную тему и все сделать с нуля.
 

royko666

Новичок
Начал копаться в коде, вышел на код js

// show product details
$('.promo-wrapper .product a').click(function () {

var $modal = $('#infobox.modal-box');
$modal.find('.landtitle').html('Детали подарка');

$modal.addClass('detailsbox');
// show modal
$modal.css('top', window.pageYOffset);
$modal.fadeIn(300);
$modal.prev('.modal-overlay').fadeIn(300);

$modal.find('.maxwidth').load(
$(this).attr('href') +" #content",
{},
function(){
$modal.find('.maxwidth #content').css('padding','0');

$modal.find('.maxwidth form.cart').submit(function(e){
var p_id = $('.maxwidth form.cart input[name=add-to-cart]').val();
$(this).parents('form.cart').append('<div class="atcloading"></div>');
$('.info .myadded').remove();
$.ajax({
type : 'POST',
url : '?post_type=product&add-to-cart=' + p_id,
data : {'product_id': p_id, 'quantity': 1},
success: function (response, textStatus, jqXHR) {
$('.maxwidth form.cart .atcloading').remove();
$('.maxwidth .info').append('<p class="myadded">Товар добавлен в <a href="/cart">корзину</a>.</p>');
// update_minicart();
}
});
return false;
});

$(document).ready(functi
 

royko666

Новичок
Короче, решил проблему сам. Кому интересно:
1. Определил фрагмент html-кода, который выводит модальное окно (вернее его начало)
<div id="infobox" class="modal-box detailsbox" style="top: 2474px; display: block;">
<div class="modal-close obl-close"></div>
<div class="landtitle">Детали подарка</div>

2. Далее поиском через Notepad++ нашел, где содержится id "infobox". В моем случае это оказался файл functions.js
3. Код, который я нашел
// show product details
$('.promo-wrapper .product a').click(function () {

var $modal = $('#infobox.modal-box');
$modal.find('.landtitle').html('Детали подарка');

$modal.addClass('detailsbox');
// show modal
$modal.css('top', window.pageYOffset);
$modal.fadeIn(300);
$modal.prev('.modal-overlay').fadeIn(300);

$modal.find('.maxwidth').load(
$(this).attr('href') +" #content",
{},
function(){
$modal.find('.maxwidth #content').css('padding','0');

$modal.find('.maxwidth form.cart').submit(function(e){
var p_id = $('.maxwidth form.cart input[name=add-to-cart]').val();
$(this).parents('form.cart').append('<div class="atcloading"></div>');
$('.info .myadded').remove();
$.ajax({
type : 'POST',
url : '?post_type=product&add-to-cart=' + p_id,
data : {'product_id': p_id, 'quantity': 1},
success: function (response, textStatus, jqXHR) {
$('.maxwidth form.cart .atcloading').remove();
$('.maxwidth .info').append('<p class="myadded">Товар добавлен в <a href="/cart">корзину</a>.</p>');

// update_minicart();
 
Последнее редактирование:
Сверху Снизу