När jag vill sortera produkter efter pris (låg till hög och hög till låg) fungerar inte min länk. Alternativvärdet är ”pris & product_list_dir = asc”, vilket kodar i ”price% 26product_list_dir% 3Dasc”. Hur kan jag avkoda den webbadressen?
Här är min kod:
<div class="toolbar-sorter sorter"> <label class="sorter-label" for="sorter"><?php /* @escapeNotVerified */ echo __("Sort by") ?></label> <select data-role="sorter" class="sorter-options selectpicker"> <?php $url = $_SERVER["REQUEST_URI"]; $path = strstr($url, "?"); ?> <option <?php if($path == "?product_list_order=price&product_list_dir=desc"): ?> selected="selected" <?php endif; ?> class="high-low" value="price&product_list_dir=desc"> Price - High to low </option> <option <?php if($path == "?product_list_order=price&product_list_dir=asc"): ?> selected="selected" <?php endif; ?> class="low-high" value="<?php /* @escapeNotVerified */ echo __("price&product_list_dir=asc") ?>"> Price - Low to high </option> </select></div>
Kommentarer
- Vad fungerar inte? Är " valt " inte ekade ordentligt? Finns det yttre "% 26 och% 3D " i HTML-värdets attribut så det står som ' < alternativvärde = " pris% 26product_list_dir% 3Dasc " > '? Ändras inte sorteringsordningen efter att du har valt en annan typ av sortering? Vänligen ange vad som inte fungerar så att vi kan hjälpa dig snabbare.
- Jag kollade med Inspect Element och alternativvärdet upprepas korrekt. När jag klickar på alternativet, omdirigerar sidan till mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Men när jag ändrar "% 26 " och "% 3D " till " & " och " & " direkt i adressfältet, det fungerar. När jag klickar på alternativet verkar Magento koda det alternativvärdet i webbadress
Svar
Det ”s webbläsare som kodar värdet korrekt som förväntat. Kolla in https://perishablepress.com/stop-using-unsafe-characters-in-urls/ för säkra tecken.
Enligt min mening är det bästa sättet att göra det skulle bara vara att ställa in värdet till något som ”pris $ product_list_dir! asc” eller ”pris + dir-desc” eller bara ”price_desc” och analysera värdet av product_list_order i din kod. Andra alternativ är:
- Dela upp menyn till två rullgardinsmenyer (product_list_order och product_list_dir)
- Uppdatera url med javascript när rullgardinsvalet ändras
Kommentarer
- Tack. Jag lade till onChange = " window.document.location.href = this.options [this.selectedIndex] .value; " för att välja och < skripttyp = " text / javascript " > jQuery (funktion ($) {$ (' välj '). på (' ändra ', funktion () {var url = $ (detta) .val (); om (url) {window.location = url;} returnera falsk;} );}); < / script > Nu fungerar det '. Tack
Svar
ändra detta echo __("price&product_list_dir=asc")
till detta echo "price&product_list_dir=asc"
Kommentarer
- Tack för din hjälp men det ' fungerar inte