Jak mohu odstranit% 26 a% 3D z adresy URL?

Když chci produkty seřadit podle ceny (od nejnižší k nejvyšší a od nejvyšší k nejnižší), můj odkaz nefunguje. Hodnota možnosti je „price & product_list_dir = asc“, která zakóduje do „price% 26product_list_dir% 3Dasc“. Jak mohu tuto adresu URL dekódovat?

Zde je můj kód:

<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> 

Komentáře

  • Co nefunguje? Není vybrána " " správně? Existuje v atributu value html nadbytečné "% 26 a% 3D ", takže to říká ' < option value = " price% 26product_list_dir% 3Dasc " > '? Nemění se pořadí řazení po výběru jiného typu řazení? Uveďte, co nefunguje, abychom vám mohli pomoci rychleji.
  • Zkontroloval jsem to pomocí Inspect Element a hodnota možnosti se správně ozvala. Když kliknu na tuto možnost, stránka přesměruje na mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Ale když změním "% 26 " a "% 3D " do " & " a " & " přímo do adresního řádku, funguje to. Zdá se, že když kliknu na tuto možnost, Magento zakóduje tuto hodnotu volby do adresy URL

Answer

It „je prohlížeč, který kóduje hodnotu správně podle očekávání.“ Podívejte se na https://perishablepress.com/stop-using-unsafe-characters-in-urls/ na bezpečné znaky.

Podle mého názoru je to nejlepší způsob, jak to udělat by bylo jen nastavit hodnotu na něco jako „price $ product_list_dir! asc“ nebo „price + dir-desc“ nebo jen „price_desc“ a analyzovat hodnotu product_list_order ve vašem kódu. Další možnosti jsou:

  • Rozdělte nabídku na dvě rozevírací nabídky (product_list_order a product_list_dir)
  • Aktualizujte adresu URL pomocí JavaScriptu, když se změní rozbalovací nabídka

Komentáře

  • Děkuji. Přidal jsem onChange = " window.document.location.href = this.options [this.selectedIndex] .value; " k výběru a výběru < script type = " text / javascript " > jQuery (funkce ($) {$ (' vyberte ') .on (' change ', function () {var url = $ (this) .val (); if (url) {window.location = url;} return false;} );}); < / script > Nyní ' funguje. Děkuji

Odpovědět

změnit toto echo __("price&product_list_dir=asc") na toto echo "price&product_list_dir=asc"

Komentáře

  • Děkujeme vám za pomoc, ale ' nefunguje

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *