Jak mogę usunąć% 26 i% 3D z adresu URL?

Kiedy chcę sortować produkty według ceny (od najniższej do najwyższej i od najwyższej do najniższej), mój link nie działa. Wartością opcji jest „price & product_list_dir = asc”, co oznacza „price% 26product_list_dir% 3Dasc”. Jak mogę zdekodować ten adres URL?

Oto mój kod:

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

Komentarze

  • Co nie działa? Czy wybrane " " nie są poprawnie wyświetlane? Czy w atrybucie value w html znajdują się obce elementy "% 26 i% 3D ", tak jak ' < option value = " price% 26product_list_dir% 3Dasc " > '? Czy kolejność sortowania nie zmienia się po wybraniu innego rodzaju sortowania? Określ, co nie działa, abyśmy mogli szybciej pomóc.
  • Sprawdziłem za pomocą opcji Sprawdź element i wartość opcji jest wyświetlana poprawnie. Kiedy klikam opcję, strona przekierowuje do mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Ale kiedy zmienię "% 26 " i "% 3D " do " & " i " & " bezpośrednio na pasku adresu, to działa. Wygląda na to, że kiedy klikam opcję, Magento koduje wartość tej opcji w adresie url

Odpowiedź

To „to przeglądarka, która prawidłowo koduje wartość zgodnie z oczekiwaniami. Sprawdź https://perishablepress.com/stop-using-unsafe-characters-in-urls/ , aby znaleźć bezpieczne znaki.

Moim zdaniem najlepszy sposób na zrobienie tego wystarczy ustawić wartość na coś takiego jak „cena $ produkt_list_dir! asc” lub „cena + katalog-opis” lub po prostu „price_desc” i przeanalizować wartość produktu_list_order w kodzie. Inne opcje to:

  • Podziel menu na dwa menu rozwijane (product_list_order i product_list_dir)
  • Zaktualizuj adres URL za pomocą javascript, gdy zmieni się rozwijane menu

Komentarze

  • Dziękuję. Dodałem onChange = " window.document.location.href = this.options [this.selectedIndex] .value; ", aby wybrać i < typ skryptu = " text / javascript " > jQuery (function ($) {$ (' select ') .on (' change ', function () {var url = $ (this) .val (); if (url) {window.location = url;} return false;} );}); < / script > Teraz ' działa. Dziękuję

Odpowiedź

zmień to echo __("price&product_list_dir=asc") na echo "price&product_list_dir=asc"

Komentarze

  • Dziękuję za pomoc, ale ' nie działa

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *