Quando desidero ordinare i prodotti in base al prezzo (dal più basso al più alto e dal più alto al più basso), il mio collegamento non funziona. Il valore dellopzione è “price & product_list_dir = asc”, che codifica in “price% 26product_list_dir% 3Dasc”. Come posso decodificare quellURL?
Ecco il mio codice:
<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>
Commenti
- Cosa non funziona? Il " selezionato " non viene visualizzato correttamente? Sono presenti "% 26 e% 3D " nellattributo del valore dellhtml quindi dice come ' < option value = " prezzo% 26product_list_dir% 3Dasc " > '? Lordinamento non cambia dopo aver selezionato un diverso tipo di ordinamento? Specifica cosa non funziona in modo che possiamo aiutarti più rapidamente.
- Ho controllato con Inspect Element e il valore dellopzione viene visualizzato correttamente. Quando clicco sullopzione, la pagina reindirizza a mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Ma quando cambio "% 26 " e "% 3D " in " & " e " & " direttamente nella barra degli indirizzi, funziona. Sembra che, quando clicco sullopzione, Magento codifichi il valore dellopzione in url
Answer
It “è il browser che codifica il valore correttamente come previsto. Dai unocchiata a https://perishablepress.com/stop-using-unsafe-characters-in-urls/ per i caratteri sicuri.
A mio parere il modo migliore per farlo sarebbe solo impostare il valore su qualcosa come “price $ product_list_dir! asc” o “price + dir-desc” o semplicemente “price_desc” e analizzare il valore di product_list_order nel tuo codice. Altre opzioni sono:
- Dividi il menu in due menu a discesa (product_list_order e product_list_dir)
- Aggiorna lURL con javascript quando cambia la selezione del pulldown
Commenti
- Grazie. Ho aggiunto onChange = " window.document.location.href = this.options [this.selectedIndex] .value; " per selezionare e < script type = " text / javascript " > jQuery (function ($) {$ (' select ') .on (' modifica ', function () {var url = $ (this) .val (); if (url) {window.location = url;} return false;} );}); < / script > Ora ' funziona. Grazie
Risposta
cambia echo __("price&product_list_dir=asc")
in questo echo "price&product_list_dir=asc"
Commenti
- Grazie per il tuo aiuto ma ' non funziona