Cuando quiero ordenar productos por precio (de menor a mayor y de mayor a menor), mi enlace no funciona. El valor de la opción es «price & product_list_dir = asc», que se codifica en «price% 26product_list_dir% 3Dasc». ¿Cómo puedo decodificar esa URL?
Aquí está mi código:
<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>
Comentarios
- ¿Qué no funciona? ¿El " seleccionado " no se repite correctamente? ¿Hay "% 26 y% 3D " extraños en el atributo value del html, por lo que dice < option value = " price% 26product_list_dir% 3Dasc " > '? ¿El orden de clasificación no cambia después de seleccionar un tipo diferente de clasificación? Especifique lo que no funciona para que podamos ayudarlo más rápidamente.
- Verifiqué con Inspeccionar elemento y el valor de la opción se repite correctamente. Cuando hago clic en la opción, la página se redirige a mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Pero cuando cambio "% 26 " y "% 3D " en " & " y " & " directamente en la barra de direcciones, funciona. Parece que, cuando hago clic en la opción, Magento codifica el valor de esa opción en la URL
Respuesta
Se Es el navegador que codifica el valor correctamente como se esperaba. Consulte https://perishablepress.com/stop-using-unsafe-characters-in-urls/ para obtener caracteres seguros.
En mi opinión, la mejor manera de hacerlo sería simplemente establecer el valor en algo como «price $ product_list_dir! asc» o «price + dir-desc» o simplemente «price_desc» y analizar el valor de product_list_order en su código. Otras opciones son:
- Divida el menú en dos menús desplegables (product_list_order y product_list_dir)
- Actualice la URL con javascript cuando cambie la selección desplegable
Comentarios
- Gracias. Agregué onChange = " window.document.location.href = this.options [this.selectedIndex] .value; " para seleccionar y < script type = " text / javascript " > jQuery (function ($) {$ (' select ') .on (' cambiar ', function () {var url = $ (this) .val (); if (url) {window.location = url;} return false;} );}); < / script > Ahora ' está funcionando. Gracias
Responder
cambie este echo __("price&product_list_dir=asc")
por este echo "price&product_list_dir=asc"
Comentarios
- Gracias por su ayuda, pero ' s no funciona