Quando desejo classificar os produtos por preço (do menor para o maior e do maior para o menor), meu link não funciona. O valor da opção é “price & product_list_dir = asc”, que codifica em “price% 26product_list_dir% 3Dasc”. Como posso decodificar esse url?
Aqui está meu 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>
Comentários
- O que não está funcionando? O " selecionado " não foi ecoado corretamente? Existe "% 26 e% 3D " estranho no atributo de valor do html, então diz como ' < valor da opção = " preço% 26product_list_dir% 3Dasc " > '? A ordem de classificação não muda depois que você seleciona um tipo diferente de classificação? Especifique o que não está funcionando para que possamos ajudá-lo mais rapidamente.
- Eu verifiquei com Inspecionar elemento e o valor da opção é ecoado corretamente. Ao clicar na opção, a página redireciona para mysite.com/category.html?product_list_order=price%26product_list_dir%3Dasc. Mas quando eu mudo "% 26 " e "% 3D " em " & " e " & " diretamente na barra de endereços, funciona. Parece que, quando clico na opção, o Magento codifica o valor dessa opção no url
Resposta
É o navegador que codifica o valor corretamente, conforme o esperado. Verifique https://perishablepress.com/stop-using-unsafe-characters-in-urls/ para caracteres seguros.
Na minha opinião, a melhor maneira de fazer isso seria apenas definir o valor para algo como “price $ product_list_dir! asc” ou “price + dir-desc” ou apenas “price_desc” e analisar o valor de product_list_order em seu código. Outras opções são:
- Divida o menu em dois menus suspensos (product_list_order e product_list_dir)
- Atualize o url com javascript quando a seleção suspensa mudar
Comentários
- Obrigado. Eu adicionei onChange = " window.document.location.href = this.options [this.selectedIndex] .value; " para selecionar e < script type = " text / javascript " > jQuery (function ($) {$ (' selecione ') .on (' alterar ', function () {var url = $ (this) .val (); if (url) {window.location = url;} return false;} );}); < / script > Agora ' está funcionando. Obrigado
Resposta
altere echo __("price&product_list_dir=asc")
para este echo "price&product_list_dir=asc"
Comentários
- Obrigado por sua ajuda, mas ' não está funcionando