Når jeg vil sortere produkter etter pris (lav til høy og høy til lav), fungerer ikke lenken min. Alternativverdien er «pris & product_list_dir = asc», som koder i «pris% 26product_list_dir% 3Dasc». Hvordan kan jeg dekode den url?
Her er koden min:
<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
- Hva fungerer ikke? Er " valgt " ikke ekko riktig? Er det fremmede "% 26 og% 3D " i verdiattributtet til html så det står som ' < alternativverdi = " pris% 26product_list_dir% 3Dasc " > '? Endres ikke sorteringsrekkefølgen etter at du har valgt en annen type sortering? Vennligst spesifiser hva som ikke fungerer, slik at vi kan hjelpe deg raskere.
- Jeg sjekket med Inspect Element og alternativverdien ekko riktig. Når jeg klikker på alternativet, viderekobler siden til mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Men når jeg endrer "% 26 " og "% 3D " til " & " og " & " direkte inn i adressefeltet, det fungerer. Når jeg klikker på alternativet, ser det ut til at Magento koder den alternativverdien i url
Svar
Det er nettleseren som koder verdien riktig som forventet. Ta en titt på https://perishablepress.com/stop-using-unsafe-characters-in-urls/ for sikre tegn.
Etter min mening er den beste måten å gjøre det på ville bare være å sette verdien til noe sånt som «price $ product_list_dir! asc» eller «price + dir-desc» eller bare «price_desc» og analysere verdien av product_list_order i koden din. Andre alternativer er:
- Del menyen i to rullegardinmenyer (product_list_order og product_list_dir)
- Oppdater url med javascript når nedtrekksvalget endres
Kommentarer
- Takk. Jeg la til onChange = " window.document.location.href = this.options [this.selectedIndex] .value; " for å velge og < script type = " text / javascript " > jQuery (funksjon ($) {$ (' velg '). på (' endre ', funksjon () {var url = $ (dette) .val (); hvis (url) {window.location = url;} returner false;} );}); < / script > Nå fungerer det '. Takk
Svar
endre dette echo __("price&product_list_dir=asc")
til dette echo "price&product_list_dir=asc"
Kommentarer
- Takk for hjelpen, men det ' fungerer ikke