В административной части Opencart 2 очень неудобный поиск.
Например чтобы найти «Сумка серая АБВГД» надо вбить в поиск название с самой первой буквы
После установки мода будет работать и «серая» и «АБВГД» и «абв» и т.д.
После маленьких допиливаний еще упростим нажатие кнопки поиск и поиск по модели.
Итак поехали:
Сам мод:
<?xml version="1.0" encoding="utf-8"?> <modification> <name>Admin search+</name> <version>1.1</version> <code>Admin search+</code> <author>Otvet</author> <file path="admin/model/catalog/product.php"> <operation> <search><![CDATA[ $sql .= " AND pd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; ]]></search> <add position="replace"><![CDATA[ $sql .= " AND pd.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; ]]></add> </operation> </file> <file path="admin/model/catalog/product.php"> <operation> <search><![CDATA[ $sql .= " AND cd2.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; ]]></search> <add position="replace"><![CDATA[ $sql .= " AND cd2.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; ]]></add> </operation> </file> <file path="admin/model/catalog/option.php"> <operation> <search><![CDATA[ $sql .= " AND od.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; ]]></search> <add position="replace"><![CDATA[ $sql .= " AND od.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; ]]></add> </operation> </file> <file path="admin/model/catalog/attribute.php"> <operation> <search><![CDATA[ $sql .= " AND ad.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; ]]></search> <add position="replace"><![CDATA[ $sql .= " AND ad.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; ]]></add> </operation> </file> <file path="admin/view/template/catalog/product_list.tpl"> <operation> <search><![CDATA[ <?php echo $footer; ?> ]]></search> <add position="before"><![CDATA[ <script> $('.form-control').keypress(function(e) { if(e.which == 13) { jQuery(this).blur(); jQuery('#button-filter').focus().click(); } }); </script> ]]></add> </operation> </file> </modification>
Вносим изменения для поиска по модели
В модели admin/model/catalog/product.php ищем:
$sql .= " AND p.model LIKE '" . $this->db->escape($data['filter_model']) . "%'";
и заменяем на:
$sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_model']) . "%'";
вуаля по модели поиск тоже есть.
Добавиляем в подвал при клике по выбранному продукту автоматом нажатие на кнопку фильтр.
<script type="text/javascript"><!-- $('#input-name').on('change', function() { var url = 'index.php?route=catalog/product&token=<?php echo $token; ?>'; var filter_name = $('input[name=\'filter_name\']').val(); if (filter_name) { url += '&filter_name=' + encodeURIComponent(filter_name); } var filter_model = $('input[name=\'filter_model\']').val(); if (filter_model) { url += '&filter_model=' + encodeURIComponent(filter_model); } var filter_price = $('input[name=\'filter_price\']').val(); if (filter_price) { url += '&filter_price=' + encodeURIComponent(filter_price); } var filter_quantity = $('input[name=\'filter_quantity\']').val(); if (filter_quantity) { url += '&filter_quantity=' + encodeURIComponent(filter_quantity); } var filter_status = $('select[name=\'filter_status\']').val(); if (filter_status != '*') { url += '&filter_status=' + encodeURIComponent(filter_status); } var filter_image = $('select[name=\'filter_image\']').val(); if (filter_image != '*') { url += '&filter_image=' + encodeURIComponent(filter_image); } location = url; }); $('#input-model').on('change', function() { var url = 'index.php?route=catalog/product&token=<?php echo $token; ?>'; var filter_name = $('input[name=\'filter_name\']').val(); if (filter_name) { url += '&filter_name=' + encodeURIComponent(filter_name); } var filter_model = $('input[name=\'filter_model\']').val(); if (filter_model) { url += '&filter_model=' + encodeURIComponent(filter_model); } var filter_price = $('input[name=\'filter_price\']').val(); if (filter_price) { url += '&filter_price=' + encodeURIComponent(filter_price); } var filter_quantity = $('input[name=\'filter_quantity\']').val(); if (filter_quantity) { url += '&filter_quantity=' + encodeURIComponent(filter_quantity); } var filter_status = $('select[name=\'filter_status\']').val(); if (filter_status != '*') { url += '&filter_status=' + encodeURIComponent(filter_status); } var filter_image = $('select[name=\'filter_image\']').val(); if (filter_image != '*') { url += '&filter_image=' + encodeURIComponent(filter_image); } location = url; }); </script>
Можно дополнить модификатор с учетом версий opencart.
Стало очень удобно.