商品を価格(低から高、高から低)で並べ替えたいのですが、リンクが機能しません。オプション値は「price & product_list_dir = asc」で、「price%26product_list_dir%3Dasc」でエンコードされます。そのURLをデコードするにはどうすればよいですか?
コードは次のとおりです:
<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>
コメント
- 何が機能していないのですか? "選択された"が正しくエコーされていませんか? htmlのvalue属性に無関係な"%26と%3D "があるので、' < option value = " price%26product_list_dir%3Dasc " > '?別の種類の並べ替えを選択しても、並べ替え順序は変更されませんか?より迅速にサポートできるように、機能していないものを指定してください。
- Inspect Elementで確認したところ、オプション値が正しくエコーされています。オプションをクリックすると、ページがmysite.com/category.html?product_list_order=price%26product_list_dir%3Dascにリダイレクトされます。しかし、"%26 "と"%3D を" & "と & "をアドレスバーに直接挿入すると機能します。オプションをクリックすると、Magentoはそのオプション値をURLでエンコードしているようです
回答
It期待どおりに値を正しくエンコードしているブラウザです。安全な文字については、 https://perishablepress.com/stop-using-unsafe-characters-in-urls/ を確認してください。
私の意見では、それを行うための最良の方法です。値を「price $ product_list_dir!asc」、「price + dir-desc」、または「price_desc」のように設定し、コード内のproduct_list_orderの値を解析するだけです。その他のオプションは次のとおりです。
- メニューを2つのドロップダウンメニュー(product_list_orderとproduct_list_dir)に分割します
- プルダウンの選択が変更されたときにjavascriptでURLを更新します
コメント
- ありがとうございます。 onChange = " window.document.location.href = this.options [this.selectedIndex] .value; "を追加して選択し< script type = " text / javascript " > jQuery(function($){$(' select ')。on(' change '、function(){var url = $(this).val(); if(url){window.location = url;} return false;} );}); < / script >これで'が機能します。ありがとう
回答
このecho __("price&product_list_dir=asc")
をこの<に変更しますdiv id = "6a8f39f58e">
コメント
- ご協力いただきありがとうございますが、'が機能しない