Anonymní profil Pavel – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Pavel – Programujte.comAnonymní profil Pavel – Programujte.com

 

Příspěvky odeslané z IP adresy 2a02:768:b53d:516a:b4be:a3af:74cc:d196...–

Pavel
JavaScript, AJAX, jQuery › Viditelnost po zatržení chec…
17. 2. 2022   #389883

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"));
      }
  }

Pavel
PHP › Viditelnost po zatržení chec…
17. 2. 2022   #389882

#2 Kit
Aha, já dal omylem jinam. Omlovám se.

Pavel
PHP › Viditelnost po zatržení chec…
17. 2. 2022   #389880

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"));
      }
  }

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý