Når jeg vil sortere produkter efter pris (lav til høj og høj til lav), fungerer mit link ikke. Indstillingsværdi er “pris & product_list_dir = asc”, som koder i “pris% 26product_list_dir% 3Dasc”. Hvordan kan jeg afkode den url?
Her er min kode:
<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
- Hvad fungerer ikke? Er " valgt " ikke genlyd korrekt? Er der fremmede "% 26 og% 3D " i htmls attribut for værdi, så det står som ' < option værdi = " pris% 26product_list_dir% 3Dasc " > '? Ændres sorteringsrækkefølgen ikke, når du har valgt en anden type sortering? Angiv, hvad der ikke fungerer, så vi kan hjælpe dig hurtigere.
- Jeg kontrollerede med Inspect Element, og indstillingsværdien gentages korrekt. Når jeg klikker på indstillingen, omdirigeres siden til mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Men når jeg ændrer "% 26 " og "% 3D " i " & " og " & " direkte i adresselinjen, det fungerer. Når jeg klikker på indstillingen, ser det ud til, at Magento koder denne indstillingsværdi i url
Svar
Det “s den browser, der koder værdien korrekt som forventet. Tjek https://perishablepress.com/stop-using-unsafe-characters-in-urls/ for sikre tegn.
Efter min mening er den bedste måde at gøre det på ville bare være at indstille værdien til noget som “pris $ product_list_dir! asc” eller “pris + dir-desc” eller bare “price_desc” og analysere værdien af product_list_order i din kode. Andre muligheder er:
- Opdel menuen i to rullemenuer (product_list_order og product_list_dir)
- Opdater urlen med javascript, når rullelisten ændres
Kommentarer
- Tak. Jeg tilføjede onChange = " window.document.location.href = this.options [this.selectedIndex] .value; " for at vælge og < script type = " text / javascript " > jQuery (funktion ($) {$ (' vælg '). på (' skift ', funktion () {var url = $ (dette) .val (); hvis (url) {window.location = url;} returner false;} );}); < / script > Nu fungerer det '. Tak
Svar
skift dette echo __("price&product_list_dir=asc")
til dette echo "price&product_list_dir=asc"
Kommentarer
- Tak for din hjælp, men det ' fungerer ikke