Lorsque je souhaite trier les produits par prix (de bas en haut et de haut en bas), mon lien ne fonctionne pas. La valeur de loption est « price & product_list_dir = asc », qui est encodée dans « price% 26product_list_dir% 3Dasc ». Comment puis-je décoder cette URL?
Voici mon code:
<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>
Commentaires
- Quest-ce qui ne fonctionne pas? Le " sélectionné " nest-il pas renvoyé correctement? Y a-t-il des éléments superflus "% 26 et% 3D " dans lattribut value du code HTML, donc il est dit ' < option value = " price% 26product_list_dir% 3Dasc " > '? Lordre de tri ne change-t-il pas une fois que vous avez sélectionné un autre type de tri? Veuillez spécifier ce qui ne fonctionne pas afin que nous puissions vous aider plus rapidement.
- Jai vérifié avec Inspecter lélément et la valeur de loption est correctement répercutée. Lorsque je clique sur loption, la page redirige vers mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Mais quand je change "% 26 " et "% 3D " en " & " et " & " directement dans la barre dadresse, cela fonctionne. Il semble que, lorsque je clique sur loption, Magento encode cette valeur doption dans lurl
Answer
Il « est le navigateur qui encoder la valeur correctement comme prévu. » Consultez https://perishablepress.com/stop-using-unsafe-characters-in-urls/ pour les caractères sûrs.
À mon avis, la meilleure façon de le faire serait juste de définir la valeur sur quelque chose comme « price $ product_list_dir! asc » ou « price + dir-desc » ou simplement « price_desc » et analyser la valeur de product_list_order dans votre code. Les autres options sont:
- Diviser le menu en deux menus déroulants (product_list_order et product_list_dir)
- Mettre à jour lURL avec javascript lorsque la sélection déroulante change
Commentaires
- Merci. Jai ajouté onChange = " window.document.location.href = this.options [this.selectedIndex] .value; " pour sélectionner et < script type = " text / javascript " > jQuery (function ($) {$ (' select ') .on (' change ', function () {var url = $ (this) .val (); if (url) {window.location = url;} return false;} );}); < / script > Maintenant, ' fonctionne. Merci
Réponse
changer ce echo __("price&product_list_dir=asc")
en echo "price&product_list_dir=asc"
Commentaires
- Merci pour votre aide mais ' ne fonctionne pas