Dodanie obsługi filtrów na stronie głównej
W tym artykule dowiesz się jak zmodyfikować swój szablon, aby dodać w nim obsługę filtrów na stronie głównej.
Poniższy przykład jest jednym z wielu możliwych scenariuszy, Należy modyfikować kod we we własnym zakresie i dostosować go do własnych potrzeb.
Przykład modyfikacji szablonu Szafir
Krok 1. W panelu administracyjnym e-Sklepu przejdź do sekcji Wygląd sklepu/Ustawienia/(prawy górny róg) Edytuj ustawienia zaawansowane/(prawy górny róg) Edytuj HTML.
Krok 2. Przejdź do pliku home.html i na samym początku zastąp linijkę:
poniższym kodem:
{% assign categories = homepage-filters.Content | Split: '||||||’ -%} {% assign categoryIndex = 0 -%}
{% assign categoryIndex = 0 -%} {% for category in categories -%} {% assign categoryIndex = categoryIndex | Plus:1 -%} {% assign categoryArr = category | Split: '|||||’ -%} {% assign categoryInfoArr = categoryArr[0] | Split: '|’ -%} {% assign categoryId = categoryInfoArr[1] -%}
{% endfor -%}
Krok 3. Z listy dostępnych plików przejdź do folderu js, a następnie w dowolnym pliku JS (np. js/init.js) dodaj kod:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
function toggleHomepageFilter(e) { var index = $(e.currentTarget).data('index'); $('.filter-bar-lq').removeClass('active-filter-bar-lq'); $(e.currentTarget).addClass('active-filter-bar-lq'); $('.homepage-filters-container-lq').addClass('hidden-lq'); $('.homepage-filters-container-lq[data-index='+index+']').removeClass('hidden-lq'); }; $('body').on('click', '.filter-bar-lq:not(.active-filter-bar-lq)', function (e) { toggleHomepageFilter(e); }); function getHomepageFilterValues(e) { var currentFilter = $(e.currentTarget); var currentFilterName = currentFilter.attr('name'); var filtersContainer = $(e.currentTarget).parents('.homepage-filters-container-lq'); var id = filtersContainer.find('.post-homepage-filters-lq').data('id'); var data = []; var selects = filtersContainer.find('select'); selects.each(function () { if($(this).val() != '' && $(this).attr('name') != currentFilterName){ var name = $(this).attr('name'); var val = $(this).val(); data.push({name: name, value: val}); } }); data.push({name: "__action", value: 'Get/SearchFilters'}); var param = $.param(data, true); $.get(',2,' + id, param, function (result) { $.get(result.action.Redirect302, {__collection: 'products.FilteringOptions.Filters'}, function (res) { var filtersSortingOrder = $('.homepage-lq').data('filters-sorting-order').split('|'); var notSortedFilters = res.collection; var sortedFilters = []; for(var i=0; i<notSortedFilters.length; i++){ sortedFilters.push({Field: notSortedFilters[i].Field, Values: []}); for(var j=0; j<filtersSortingOrder.length; j++){ var sortingFilterName = filtersSortingOrder[j].trim(); for(var k=0; k<notSortedFilters[i].Values.length; k++){ if(sortingFilterName == notSortedFilters[i].Values[k].Text){ sortedFilters[i].Values.push(notSortedFilters[i].Values[k]); } } } } for(var i=0; i<sortedFilters.length; i++){ if(sortedFilters[i].Field == currentFilterName){ var values = sortedFilters[i].Values; var selectedOptionValue = currentFilter.val(); currentFilter.find('option:not([value=""])').remove(); for(var j=0; j<values.length; j++){ if(values[j].Count > 0){ var option = ''+values[j].Text+''; currentFilter.append(option); } } var newOptions = currentFilter.find('option'); newOptions.each(function(){ if($(this).val() == selectedOptionValue){ $(this).prop('selected', true); } }) } } }); }); }; $('body').on('mouseenter', '.get-homepage-filter-values-lq', function (e) { getHomepageFilterValues(e); }); function postHomepageFilters(e) { var id = $(e.currentTarget).data('id'); var data = []; var selects = $(e.currentTarget).parents('.homepage-filters-container-lq').find('select'); selects.each(function () { if($(this).val() != ''){ var name = $(this).attr('name'); var val = $(this).val(); data.push({name: name, value: val}); } }); data.push({name: "__action", value: 'Get/SearchFilters'}); var param = $.param(data, true); $.get(',2,' + id, param, function (result) { app.replace(result.action.Redirect302); }); }; $('body').on('click', '.post-homepage-filters-lq', function (e) { postHomepageFilters(e); }); |
Krok 4. Przejdź do folderu scss, a następnie do podfolderu globals, gdzie w pliku _globals-m.scss dodaj kod:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
.filter-bars-container-ui{ display: flex; } .filter-bar-ui { width: 50%; border: none; text-align: center; padding: 10px; border-bottom: 1px solid $lightBorderColor; background: $menuBackgroundColor; display: flex; align-items: center; justify-content: center; } .active-filter-bar-lq, .filter-bar-ui:hover { background: $breadcrumbsAndSomeLists; border-bottom: 1px solid $breadcrumbsAndSomeLists; color: #fff; } |
Krok 5. Będąc w fodlerze scss, przejdź do podfolderu partials, następnie dodaj poniższy kod w pliku _home.scss:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
.homepage-filters-container-ui{ position: absolute; top: -2px; left: 0; z-index: 11; width: 100%; padding: 20px 0 5px; background: rgba(#5B6569, 0.5); border-top: 2px solid $breadcrumbsAndSomeLists; text-align: center; } .homepage-filters-ui{ text-align: center; } .homepage-filter-ui{ width: 28%; display: inline-block; padding-left: 20px; margin-bottom: 20px; button{ width: 100%; height: 66px; margin-right: -15px; } label:not(.checkbox-ui):not(.radio-ui){ color: #fff; margin-left: 6px; } } @media only screen and (max-width: 1279px) { .homepage-filters-container-ui{ position: static; width: 100%; background: $breadcrumbsAndSomeLists; padding: 5px 0; a{ display: block; color: #fff; padding: 20px; text-align: center; } } .homepage-filters-ui{ text-align: left; } .homepage-filter-ui{ width: calc(50% - 12px); display: inline-block; float: none; margin-bottom: 0; &:nth-child(1), &:nth-child(6){ width: 100%; padding: 0 20px; } button { height: 56px; margin-top: 20px; } label:not(.checkbox-ui):not(.radio-ui){ margin-left: 0; } } } |
Krok 1. W Panelu Administracyjnym przejdź do zakładki Wygląd sklepu/Ustawienia/(prawy górny róg) Edytuj ustawienia zaawansowane/Zakładka Obiekty. Krok 2. Dodaj nowy obiekt klikając przycisk Dodaj. Wybierz typ Tekst i nazwij go homepage-filters. Gdy się pojawi na liście obiektów kliknij na niego, aby edytować jego ustawienia. Krok 3. W polu treść sprecyzuj, jakiej kategorii towarów ma dotyczyć filtrowanie (możesz utworzyć kilka osobnych zakładek), oraz jakich atrybutów filtrujących będzie można użyć. Poniżej przykładowa treść:
Krok 4. Udostępnij obiekt na stronie głównej w szablonie. Gdy utworzysz treść dla obiektu przejdź do zakładki Strony i zaznacz parametr Strona główna. Krok 5. Do listy obiektów (Wygląd sklepu/Ustawienia/(prawy górny róg)Edytuj ustawienia zaawansowane/Zakładka Obiekty) dodaj nowy obiekt o typie tekst oraz nazwie filters-sorting-order. Krok 6. Podobnie jak w kroku 3 uzupełnij treść dla nowo dodanego obiektu. W treści należy wprowadzić wszystkie wartości, dla każdego filtra, którego chcemy wyświetlać Klientom w e-Sklepie. Kolejność, w jakiej wprowadzisz wartości będzie taka sama na stronie głównej e-Sklepu. Poniżej przykładowa treść:
Krok 7. Udostępnij obiekt na stronie głównej w szablonie. Gdy utworzysz treść dla obiektu przejdź do zakładki Strony i zaznacz parametr Strona główna (patrz pkt. 4).Panel Administracyjny
Czy ten artykuł był pomocny?