Cum pot elimina% 26 și% 3D de pe adresa URL?

Când vreau să sortez produsele în funcție de preț (de la mic la mare și de la mare la mic), linkul meu nu funcționează. Valoarea opțiunii este „price & product_list_dir = asc”, care codifică în „price% 26product_list_dir% 3Dasc”. Cum pot decoda adresa URL?

Iată codul meu:

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

Comentarii

  • Ce nu funcționează? " selectat " nu are ecou corect? Există extrane "% 26 și% 3D " în atributul de valoare al html, așa că scrie ca ' < option value = " price% 26product_list_dir% 3Dasc " > '? Nu se modifică ordinea de sortare după ce selectați un alt tip de sortare? Vă rugăm să specificați ce nu funcționează, astfel încât să vă putem ajuta mai repede.
  • Am verificat cu Inspectarea elementului, iar valoarea opțiunii este repetată corect. Când dau clic pe opțiune, redirecționarea paginii către mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Dar când schimb "% 26 " și "% 3D " în " & " și " & " direct în bara de adrese, funcționează. Se pare că, când fac clic pe opțiune, Magento codifică acea valoare a opțiunii în url

Răspuns

„este browserul care codifică corect valoarea așa cum era de așteptat. Consultați https://perishablepress.com/stop-using-unsafe-characters-in-urls/ pentru caractere sigure.

În opinia mea, cel mai bun mod de a o face ar fi doar să setați valoarea la ceva de genul „price $ product_list_dir! asc” sau „price + dir-desc” sau doar „price_desc” și să analizați valoarea product_list_order în codul dvs. Alte opțiuni sunt:

  • Împărțiți meniul în două meniuri derulante (product_list_order și product_list_dir)
  • Actualizați adresa URL cu javascript când se modifică selecția derulantă

Comentarii

  • Vă mulțumim. Am adăugat onChange = " window.document.location.href = this.options [this.selectedIndex] .value; " pentru a selecta și < script type = " text / javascript " > jQuery (function ($) {$ (' selectați ') .on (' change ', function () {var url = $ (this) .val (); if (url) {window.location = url;} return false;} );}); < / script > Acum funcționează ' Vă mulțumim

Răspundeți

schimbați acest echo __("price&product_list_dir=asc") cu acest echo "price&product_list_dir=asc"

Comentarii

  • Vă mulțumim pentru ajutor, dar ' nu funcționează

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *