Удобный поиск в админке Opencart 2

В административной части 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.

Стало очень удобно.

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии