Hvordan kan jeg fjerne% 26 og% 3D fra url?

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *