Přátelé, měl bych k vám prosbu. Jsem téměř absolutní laik, co se programování týče a právě proto bych potřeboval poradit. Máme na shopu novou template a zjistili jsme, že při použití filtrů produktů nám to nefunguje přesně jak by mělo. Jde o to, že pokud rozbalíme filtrování (pokročilé filtry), zobrazí se vše, jak má. Je tam filtrování podle značky a jiných parametrů. Problém je v tom, že po kliknutí na nějaký checkbox se filtry opět sbalí a musí se znovu otevřít. Vyjímku tvoří pouze filtrování podle značky (kde zůstane rám filtrů pořád otevřený a lze dále filtrovat. Pokud ale otevřete filtry, a jako první nekliknete na nějaký filtr podle značky, ale jiný filtr, tak to zmizí a musí se to otevřít. Trochu jsem se v tom šťoural:-) a zjistil jsem podle kódu, že tu viditelnost u značky způsobuje toto.
function showHideFiltr(){
$("#manufacturer-filter input[type='checkbox']").change(function() {
//po kliknuti na znacku se ulozi pocet zakliknutych
lbKdFilterManufacturer = $("#manufacturer-filter input[type='checkbox']:checked").length;
});
tohle když zakomentuju, mizí i filtr značek. Jak ale donutit celé filtry, aby zůstaly aktivně otevřené stále? Moc děkuji za rady a omlouvám se za neznalost. Jinak tady je celý kód, který to ovládá.
var lbKdFilterManufacturer = 0;
function showHideFiltr(){
$("#manufacturer-filter input[type='checkbox']").change(function() {
//po kliknuti na znacku se ulozi pocet zakliknutych
lbKdFilterManufacturer = $("#manufacturer-filter input[type='checkbox']:checked").length;
});
$("#filterActivator").click(function(){
if($('#category-filter-hover').is(':visible')) {
hideFilter();
} else {
//zobrazit s animaci
showFilter(150);
}
});
}
function showFilter(animationLength){
$('#category-filter-hover').show(animationLength);
$("#filterActivator").html(function(index, text) {
return text.replace("Pokročilé filtry", "Zavřít filtr");
});
}
function hideFilter(){
$('#category-filter-hover').hide(350);
$("#filterActivator").html(function(index, text) {
return text.replace("Zavřít filtr", "Pokročilé filtry");
});
}
$(document).ready(function(){
$(".type-category .sidebar .box-filters, .type-manufacturer-detail .sidebar .box-filters").insertBefore($("#category-header"));
$(".type-category #content #filters, .type-manufacturer-detail #content #filters").insertBefore($("#category-header"));
$(".type-category #content #filters").append('<span class="btn" id="filterActivator">Pokročilé filtry</span>');
$('.param-filter-top label[for="stock"]').html(function(index, text) {
return text.replace("Na skladě", "Skladem");
});
showHideFiltr();
insertControlsAdvancedOrder();
var windowWidth = $(window).width();
if(windowWidth < 768) {
$("#content > .filters-wrapper a.btn[data-unveil='filters']").insertBefore($("#category-header"));
}
document.addEventListener("ShoptetDOMPageContentLoaded", function() {
lbKdAjaxComplete();
});
document.addEventListener("ShoptetDOMPageMoreProductsLoaded", function() {
lbKdAjaxComplete();
});
});
function insertControlsAdvancedOrder(){
document.addEventListener("ShoptetDOMAdvancedOrderLoaded", function () {
var continueButton = $('<button type="button" class="btn btn-primary lbKdELiquidContinue">Pokračovat v nákupu</button>');
$("#colorbox .advanced-order .extra.step").prepend(continueButton);
/*
$.colorbox.resize({
width : $('.content-wrapper').width(),
});
*/
$(".lbKdELiquidContinue").click(function() {
$.colorbox.close();
});
});
}
function lbKdAjaxComplete(){
$(".type-category .sidebar .box-filters, .type-manufacturer-detail .sidebar .box-filters").insertBefore($("#category-header"));
$(".type-category #content #filters, .type-manufacturer-detail #content #filters").insertBefore($("#category-header"));
$('.param-filter-top label[for="stock"]').html(function(index, text) {
return text.replace("Na skladě", "Skladem");
});
if(!$("#filterActivator").length){
$(".type-category #content #filters").append('<span class="btn" id="filterActivator">Pokročilé filtry</span>');
//znovu zaregistrovat listener
showHideFiltr();
//kontrola poctu oznacenych znacek
if(lbKdFilterManufacturer > 0){
//zobrazit bez animace
showFilter(0);
}
}
var windowWidth = $(window).width();
if(windowWidth < 768) {
$("#content > .filters-wrapper a.btn[data-unveil='filters']").insertBefore($("#filters"));
}
}