KIBANGA BOOKS (OFFICIAL)
-
5.00 rating from 3 reviews
jQuery(document).ready(function($) {
// 1. Force show price on page load for variable products
$('.single-product .variations_form').each(function() {
var $form = $(this);
var $price = $form.closest('.summary').find('.price');
$price.show();
$form.on('found_variation', function(e, variation) {
if (variation.display_price) {
$price.show();
}
});
});
// 2. Prevent clicking "Browse By Categories" from navigating to the empty page (Desktop & Mobile)
$(document).on('click', '.mobile-menu-wrapper .menu-item-has-children > a, .standard-menu-container .menu-item-has-children > a', function(e) {
e.preventDefault();
});
// 3. Dynamic WooCommerce Cart Count in Desktop Header Pill
(function initHeaderCartCounter() {
function getWooCookie(name) {
var match = document.cookie.match(new RegExp('(^|;\\s*)' + name + '=([^;]*)'));
return match ? decodeURIComponent(match[2]) : null;
}
function updateCartBadge(count) {
var num = parseInt(count, 10);
if (isNaN(num) || num < 0) num = 0;
var $cartLinks = $('.standard-menu-container .menu > li.menu-item-cart > a, .standard-menu-container .menu > li > a[href*="cart"], .menu-item-cart > a, .standard-menu-container a[href*="cart"]');
if ($cartLinks.length) {
$cartLinks.each(function() {
var $link = $(this);
var $badge = $link.find('.kibanga-cart-badge');
if (!$badge.length) {
$badge = $('');
$link.append($badge);
}
$badge.text(num);
if (num > 0) {
$badge.addClass('has-items');
} else {
$badge.removeClass('has-items');
}
});
}
}
function refreshWooCartBadge() {
var count = null;
// Step A: Standard WooCommerce cookie
var cookieCount = getWooCookie('woocommerce_items_in_cart');
if (cookieCount !== null && cookieCount !== '') {
count = cookieCount;
}
// Step B: WooCommerce fragments stored in sessionStorage
if (count === null && window.sessionStorage) {
try {
for (var i = 0; i < sessionStorage.length; i++) {
var key = sessionStorage.key(i);
if (key && key.indexOf('wc_fragments') === 0) {
var frags = JSON.parse(sessionStorage.getItem(key) || '{}');
for (var sel in frags) {
var $f = $('').html(frags[sel]);
var countText = $f.find('.count, .cart-count, .cart-items').first().text();
var parsed = parseInt(countText.replace(/\D/g, ''), 10);
if (!isNaN(parsed)) {
count = parsed;
break;
}
}
}
if (count !== null) break;
}
} catch (e) {}
}
// Step C: Fallback to any existing top bar widget or mini-cart
if (count === null) {
var topWidgetTxt = $('.top-header-bar .cart-totals-widget, .cart-total, .cart-contents-count').first().text();
var parsedTop = parseInt(topWidgetTxt.replace(/\D/g, ''), 10);
if (!isNaN(parsedTop)) {
count = parsedTop;
}
}
updateCartBadge(count !== null ? count : 0);
}
// Run immediately on page load
refreshWooCartBadge();
// Listen for live WooCommerce AJAX events (add to cart, remove from cart, fragments refresh)
$(document.body).on('added_to_cart removed_from_cart wc_fragments_refreshed wc_fragments_loaded', function(e, fragments) {
if (fragments) {
for (var sel in fragments) {
var $frag = $('
').html(fragments[sel]);
var badgeText = $frag.find('.count, .cart-count, .cart-items').first().text();
var num = parseInt(badgeText.replace(/\D/g, ''), 10);
if (!isNaN(num)) {
updateCartBadge(num);
return;
}
}
}
setTimeout(refreshWooCartBadge, 150);
});
})();
});