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

Решено Добавление в корзину без перезагрузки страницы

adward

Форумчанин
Собственно в теме и указал то, что ищу.

Хотелось бы чтобы при клике "добавить в корзину" - не перезагружалась страница целиком.

Кто либо встречал?..
 

maxfire

Новичок
В файле /wp-content/plugins/woocommerce/templates/single-product/add-to-cart/simple.php вместо:

  1. <buttontype="submit"class="single_add_to_cart_button button alt"><?php echo $product->single_add_to_cart_text();?></button>
вставляем код:

  1. <button type="submit" data-quantity="1" data-product_id="<?php echo $product->id;?>"
  2. class="button alt add_to_cart_button product_type_simple"><?php echo $product->single_add_to_cart_text();?></button>
 

searchingman

Гуру
Местный
В файле /wp-content/plugins/woocommerce/templates/single-product/add-to-cart/simple.php вместо:

  1. <buttontype="submit"class="single_add_to_cart_button button alt"><?php echo $product->single_add_to_cart_text();?></button>
вставляем код:

  1. <button type="submit" data-quantity="1" data-product_id="<?php echo $product->id;?>"
  2. class="button alt add_to_cart_button product_type_simple"><?php echo $product->single_add_to_cart_text();?></button>
Править файлы-шаблоны плагина категорически не рекомендуется. Для этого их нужно копировать в свою тему и затем править.
 

rikitiki

Специалист
Местный
Править файлы-шаблоны плагина категорически не рекомендуется. Для этого их нужно копировать в свою тему и затем править.
Добавить то в тему можно, только по этому пути работать не будет. Во всяком случае у меня не сработало.
 
Нашел решение, чтобы после перезагрузки страницы - скролл возвращался на последнюю позицию.
Это полезно тогда, когда тема не поддерживает ajax добавление в корзину и каждый раз возвращает страницу вверх.
Обращайтесь
 

tuxfighter

Гуру
Местный
Нашел решение, чтобы после перезагрузки страницы - скролл возвращался на последнюю позицию.
Это полезно тогда, когда тема не поддерживает ajax добавление в корзину и каждый раз возвращает страницу вверх.
Обращайтесь
т.е. просто выложить это решение здесь - религия не позволяет?
 

Kaliondis

Новичок
Код:
add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment' );

function woocommerce_header_add_to_cart_fragment( $fragments ) {
 ob_start();
 ?>
 <a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'Перейти в корзину' ); ?>"><i class="fa fa-shopping-cart"></i><?php echo sprintf (_n( '%d товар', '%d товаров', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a>
 <?php
 $fragments['a.cart-contents'] = ob_get_clean();
 return $fragments;
}
вроде так
 

Delirium_Tremens

Новичок
Код:
add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment' );

function woocommerce_header_add_to_cart_fragment( $fragments ) {
 ob_start();
 ?>
 <a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'Перейти в корзину' ); ?>"><i class="fa fa-shopping-cart"></i><?php echo sprintf (_n( '%d товар', '%d товаров', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a>
 <?php
 $fragments['a.cart-contents'] = ob_get_clean();
 return $fragments;
}
вроде так

А это куда вставлять?
 

Kaliondis

Новичок
Код:
// Ajax cart update
function woocommerce_header_add_to_cart_fragment( $fragments ) {
    ob_start();
    if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
        ?>
        <a class="cart-contents cart-complete" href="<?php echo esc_url( WC()->cart->get_cart_url() ); ?>" title="<?php esc_attr_e( 'Перейти в корзину', 'ma' ); ?>">
            <span class="amount"><?php echo wp_kses_data( WC()->cart->get_cart_subtotal() ); ?></span> <span class="count">(<?php echo wp_kses_data( sprintf( _n( '%d тов.', '%d тов.', WC()->cart->get_cart_contents_count(), 'ma' ), WC()->cart->get_cart_contents_count() ) );?>)</span>
        </a>
        <?php
    } else {
        ?>
        <a class="cart-contents" href="<?php echo esc_url( WC()->cart->get_cart_url() ); ?>" title="<?php esc_attr_e( 'Перейти в корзину', 'ma' ); ?>">
        </a>
        <?php
    }
    $fragments['a.cart-contents'] = ob_get_clean();
    return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment' );
ХХХ золотых ХХХ товаров - появляется при sizeof( WC()->cart->get_cart() ) > 0
 

exepr0gaming

Новичок
Сегодня столкнулся с подобной проблемой, решил следующим образом -
Там, где Вы используете корзину пишем:
<a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'Перейти к оформлению товаров' ); ?>"><?php echo sprintf (_n( '%d товар', '%d товаров', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a>
В файле функций добавляем:
add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment' );
function woocommerce_header_add_to_cart_fragment( $fragments ) {
ob_start();
?>
<a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>"><?php echo sprintf (_n( '%d товар', '%d товаров', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a>
<?php
$fragments['a.cart-contents'] = ob_get_clean();
return $fragments;
}
Классы свои можете оставить естественно, лишь бы они в функции и ссылке совпадали, ничего сложного, ну и конечно же в теме, в товарах ajax должен быть включен.
---

У меня с небольшой проверкой, на пустую корзину, выглядит в общем и целом вот так (но оно Вам может и не нужно совершенно, кода выше хватает для работы):
<div class="cart-contents header-wrap__cart">
<center>Моя корзина<br>
<i class="fa fa-shopping-cart"></i><br>
<a class="cart-items cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="Посмотреть корзину">
<span class="header-wrap__cart-quant-val cart-count" style="color:#000000;">
<?php
if (WC()->cart->cart_contents_count > 0) {
echo sprintf(_n('%d товар', '%d товаров', WC()->cart->cart_contents_count, 'store'), WC()->cart->cart_contents_count); ?></span><br>
<span style="color:#000000;" class="header-wrap__cart-quant-val cart-count">На <?php echo WC()->cart->get_cart_total(); ?>
</span>
<?php
} else {
echo '<span class="header-wrap__cart-quant-val cart-count" style="color:#000000;">Корзина пуста</span>';
}
?>
</a></center>
</div>
 
Последнее редактирование:

Beagler

Опытный
Рабочее решение для single product:
в functions.php темы добавить
PHP:
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

add_action( 'woocommerce_single_product_summary', 'woocommerce_template_loop_add_to_cart', 30 );

в js скрипты темы добавить

JavaScript:
$('body').on('added_to_cart',function(){
        $('.popup').show();
    });
 

ikonkov

Новичок
Рабочее решение для single product:
в functions.php темы добавить
PHP:
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

add_action( 'woocommerce_single_product_summary', 'woocommerce_template_loop_add_to_cart', 30 );

Ну это кнопка от лупа - она да добавляет без перезагрузки, однако пропадает возможность выбрать количество в карте товара
 
Последнее редактирование:
Сверху Снизу