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