Bilvelger (Filter)
  • 18 Feb 2025
  • 10 Minuten te lezen
  • Donker
    Licht
  • Pdf

Bilvelger (Filter)

  • Donker
    Licht
  • Pdf

The content is currently unavailable in Dutch. You are viewing the default Norwegian version.
Samenvatting van het artikel

I denne artikkelen ser vi på hvordan vi kan sette opp en bilvelger i butikker som er på America-malen.

Opprett kategoristruktur

Butikken må først ha satt opp sin kategoristruktur for å støtte Bilvelgeren.
Kategoristruktur kan bygges på følgende måte:

  • Bilvelger (Hovedkategori)

    • Audi (Bilmerke)

      • Audi A1 (Bilmodell)

        • 2010-2014 (Modell/Årsmodell)

        • 2015-2018

        • 2018 →

      • Audi A2

      • Audi A3

    • BMW (Bilmerke)

      • BMW 1-Serie (Bilmodell)

        • 1-Serie (E8xx) 2004-2007 (Modell/Årsmodell)

        • 1-Serie (E8x Facelift) 2008-2011

        • 1-Serie (F2x Facelift) 2015-2019

      • BMW 2-Serie (Bilmodell)

      • BMW 3-Serie (Bilmodell)

        • 3-Serie (E36) 1992-1997 (Modell/Årsmodell)

        • 3-Serie (E46) 1998-2001

        • 3-Serie (E46 Facelift) 2002-2004

    • Ford (Bilmerke)

Legg til kode i kontrollpanelet

Legg til Javascript og CSS i nettbutikken.
Velg “Copy” for å få korrekt, lesbar format.

function swapKeysAndValues(obj) {
    const swapped = Object.entries(obj).map(([key, value]) => [value, key]);
    return Object.fromEntries(swapped);
}

function orderByKey(categories) {
    var ordered = Object.keys(categories)
        .sort()
        .reduce(function (obj, key) {
            obj[key] = categories[key];
            return obj;
        }, {});

    return ordered;
}

function mystoreSort(categories) {
    var modified = swapKeysAndValues(categories);
    modified = orderByKey(modified);

    return modified;
}

// Custom code for car picker in header
$(document).ready(function () {
      var html = `
          <div class="custom-filter-wrapper">
             <div class="custom-filter-title">Velg din bil her</div>
             <div class="custom-filter">
                <div>
                   <select id="main-category">
                      <option value="0">Velg bilmerke </option>
                   </select>
                </div>
                <div>
                   <select id="subcategory" disabled>
                      <option value="0">Velg bilmodell</option>
                   </select>
                </div>
                <div>
                   <select id="subsubcategory" disabled>
                      <option value="0">Velg modell/årsmodell</option>
                   </select>
                </div>
             </div>
          </div>`;

      $(".frontpage-banner").append(html);

    // List all main categories

    const CAT_ID_FOR_CUSTOM_CAR_PICKER = "14296"
    
    $.get("/ajax.php?ajaxfunc=get_subcategories&cID="+CAT_ID_FOR_CUSTOM_CAR_PICKER+"", function (data) {
        var categories = JSON.parse(data);
        var tempCategories = mystoreSort(categories);
    
        for (category in tempCategories) {
            $("#main-category").append(
                '<option value="' +
                tempCategories[category] +
                '">' +
                category +
                "</option>"
            );
        }
        $('#main-category').niceSelect('update');
    });
    
    // On change list subcategories
    $("#main-category").unbind("change");
    $("#main-category").on("change", function (e) {
        console.log($(this));
        var _that = $(this);
    
        var subcatId = $(this).val();
        var textUpdate = $(this).find("option:selected").text();
    
        if (subcatId == 0) {
            $("#subcategory").find("option").remove();
            $("#subcategory").attr("disabled", "disabled");
            $("#subcategory").append('<option value="0">Velg bilmodell</option>');
            $("#subcategory").niceSelect('update');
    
            $("#subsubcategory").find("option").remove();
            $("#subsubcategory").attr("disabled", "disabled");
            $("#subsubcategory").append(
                '<option value="0">Velg modell/årsmodell</option>'
            );
            $("#subsubcategory").niceSelect('update');
    
            return false;
        }
    
        $.get(
            "/ajax.php?ajaxfunc=get_subcategories&cID=" + subcatId,
            function (data) {
                $("#subcategory").find("option").remove();
                var subcategories = JSON.parse(data);
                var tempSubCategories = mystoreSort(subcategories);
    
                $("#subcategory").removeAttr("disabled");
    
                if (subcategories == null) {
                    $.get(
                        "/ajax.php?ajaxfunc=create_category_link&cID=" + subcatId,
                        function (data) {
                            location.href = data;
                        }
                    );
                }
    
                $("#subcategory").append(
                    '<option value="0">Velg din ' + textUpdate + "</option>"
                );
                for (category in tempSubCategories) {
                    $("#subcategory").append(
                        '<option value="' +
                        tempSubCategories[category] +
                        '">' +
                        category +
                        "</option>"
                    );
                }

                $('#subcategory').niceSelect('update');
                $("#subsubcategory").find("option").remove();
                $("#subsubcategory").attr("disabled", "disabled");
                $("#subsubcategory").append('<option value="0">Velg modell/årsmodell</option>');
                $('#subsubcategory').niceSelect('update');
            }
        );
    });
    
    $("#subcategory").unbind("change");
    $("#subcategory").on("change", function (e) {
        console.log($(this));
        var _that = $(this);
    
        var subcatId = $(this).val();
    
        if (subcatId == 0) {
            $("#subsubcategory").find("option").remove();
            $("#subsubcategory").attr("disabled", "disabled");
            $("#subsubcategory").append('<option value="0">Velg modell/årsmodell</option>');
            $('#subsubcategory').niceSelect('update');
    
            return false;
        }
    
        $.get(
            "/ajax.php?ajaxfunc=get_subcategories&cID=" + subcatId,
            function (data) {
                $("#subsubcategory").find("option").remove();
                var subcategories = JSON.parse(data);
                var tempSubCategories = mystoreSort(subcategories);
    
                $("#subsubcategory").removeAttr("disabled");
    
                if (subcategories == null) {
                    $.get(
                        "/ajax.php?ajaxfunc=create_category_link&cID=" + subcatId,
                        function (data) {
                            location.href = data;
                        }
                    );
                }
    
                $("#subsubcategory").append(
                    '<option value="0">Velg modell/årsmodell</option>'
                );
                for (category in tempSubCategories) {
                    $("#subsubcategory").append(
                        '<option value="' +
                        tempSubCategories[category] +
                        '">' +
                        category +
                        "</option>"
                    );
                }
                $('#subsubcategory').niceSelect('update');
            }
        );
    });
    
    // On subcategory change, redirect
    $("#subsubcategory").on("change", function (i) {
        var _that = $(this);
        var subsubcatId = _that.val();
    
        $.get(
            "/ajax.php?ajaxfunc=create_category_link&cID=" + subsubcatId,
            function (data) {
                location.href = data;
            }
        );
    });

    $('#main-category').niceSelect();
    $('#subcategory').niceSelect();
    $('#subsubcategory').niceSelect();
});
.custom-filter-wrapper {
  margin-top: 20px;
  background: black;
  
}

.custom-filter {
    display: flex;
    padding: 15px 20px 10px;
    justify-content: space-around;
    border-radius: 4px;
    padding: 25px;
}

.custom-filter-title {
    color: #FFF;
    padding-top: 10px;
    font-size: 25px;
    text-align: center;
}

.custom-filter .nice-select {
  width: 300px;
}

@media only screen and (max-width: 600px){
  .custom-filter {
    flex-direction: column;
  	align-items: center;
    gap: 15px;
  }
}

/* nice select stuff for car picker */

.nice-select {
  -webkit-tap-highlight-color: transparent;
  background-color: #fff;
  border-radius: 5px;
  border: solid 1px #e0e7ee;
  box-sizing: border-box;
  clear: both;
  cursor: pointer;
  display: block;
  float: left;
  font-family: inherit;
  font-size: 14px;
  font-weight: normal;
  height: 42px;
  line-height: 40px;
  outline: none;
  padding-left: 18px;
  padding-right: 30px;
  position: relative;
  text-align: left !important;
  -webkit-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  white-space: nowrap;
  width: 100%;
}
  .nice-select:hover {
    border-color: #d0dae5; }
  .nice-select:active, .nice-select.open, .nice-select:focus {
    border-color: #88bfff; }
  .nice-select:after {
    border-bottom: 2px solid #90a1b5;
    border-right: 2px solid #90a1b5;
    content: '';
    display: block;
    height: 5px;
    margin-top: -4px;
    pointer-events: none;
    position: absolute;
    right: 12px;
    top: 50%;
    -webkit-transform-origin: 66% 66%;
        -ms-transform-origin: 66% 66%;
            transform-origin: 66% 66%;
    -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
            transform: rotate(45deg);
    -webkit-transition: all 0.15s ease-in-out;
    transition: all 0.15s ease-in-out;
    width: 5px; }
  .nice-select.open:after {
    -webkit-transform: rotate(-135deg);
        -ms-transform: rotate(-135deg);
            transform: rotate(-135deg); }
.nice-select.open .list {
  opacity: 1;
  pointer-events: auto;
  -webkit-transform: scale(1) translateY(0);
      -ms-transform: scale(1) translateY(0);
          transform: scale(1) translateY(0);
  width: 100%;
}
  .nice-select.disabled {
    border-color: #e7ecf2;
    color: #90a1b5;
    pointer-events: none; }
    .nice-select.disabled:after {
      border-color: #cdd5de; }
  .nice-select.wide {
    width: 100%; }
    .nice-select.wide .list {
      left: 0 !important;
      right: 0 !important; }
  .nice-select.right {
    float: right; }
    .nice-select.right .list {
      left: auto;
      right: 0; }
  .nice-select.small {
    font-size: 12px;
    height: 36px;
    line-height: 34px; }
    .nice-select.small:after {
      height: 4px;
      width: 4px; }
.nice-select.small .option {
  line-height: 34px;
  min-height: 34px;
  width: 100%;
}
  .nice-select .list {
    background-color: #fff;
    border-radius: 5px;
    box-shadow: 0 0 0 1px rgba(68, 88, 112, 0.11);
    box-sizing: border-box;
    margin-top: 4px;
    opacity: 0;
    overflow: hidden;
    padding: 0;
    pointer-events: none;
    position: absolute;
    top: 100%;
    left: 0;
    -webkit-transform-origin: 50% 0;
        -ms-transform-origin: 50% 0;
            transform-origin: 50% 0;
    -webkit-transform: scale(0.75) translateY(-21px);
        -ms-transform: scale(0.75) translateY(-21px);
            transform: scale(0.75) translateY(-21px);
    -webkit-transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;
    transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;
    z-index: 9; }
    .nice-select .list:hover .option:not(:hover) {
      background-color: transparent !important; }
  .nice-select .option {
    cursor: pointer;
    font-weight: 400;
    line-height: 40px;
    list-style: none;
    min-height: 40px;
    outline: none;
    padding-left: 18px;
    padding-right: 29px;
    text-align: left;
    -webkit-transition: all 0.2s;
    transition: all 0.2s; }
    .nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus {
      background-color: #f6f7f9; }
    .nice-select .option.selected {
      font-weight: bold; }
    .nice-select .option.disabled {
      background-color: transparent;
      color: #90a1b5;
      cursor: default; }

Velg korrekt hovedkategori i JavaScript

For at koden skal vite hvilken kategori som er hovedkategorien for Bilvelgeren, så må det settes en kategori ID direkte i JavaScript-koden.

Finn følgende kode
   // List all main categories      const CAT_ID_FOR_CUSTOM_CAR_PICKER = "14296"

Vi endrer så "14296" til ID på hovedkategorien i netbtutikken.

Hvordan finner jeg kategori ID?

For å finne kategori ID i kontrollpanelet kan du inspisere hovedkategorien.
I dette eksemplet henter vi ut kategori ID 14296 og legger det til i JavaScript.


Was dit artikel nuttig?
Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.
ESC

Eddy AI, die het ontdekken van kennis vergemakkelijkt door middel van conversationele intelligentie