OpenCart: как добавить фильтр по артикулу в админке
В стандартном фильтре в админке нельзя «фильтровать» товары по артикулу. Когда у вас тысячи товаров, такой фильтр в разы ускоряет поиск конкретного товара.
Что делать
- Открываем сайт/admin/controller/catalog/product.php
- Находим код (~227 строка):
protected function getList() {
- После фигурной скобки вставляем:
if (isset($this->request->get['filter_sku'])) {
$filter_sku = $this->request->get['filter_sku'];
} else {
$filter_sku = '';
}
$data['filter_sku'] = $filter_sku;
- В том же файле находим (~276 строка):
$url = ''
- После вставляем:
if (isset($this->request->get['filter_sku'])) {
$url .= '&filter_sku=' . $this->request->get['filter_sku'];
}
- В том же файле находим (~324 строка):
$filter_data = array(
- После скобки вставляем:
'filter_sku' => isset($filter_sku) ? $filter_sku : '',
- Сохраняем, обновляеем кэш.
- Открываем сайт/admin/model/catalog/product.php
- Находим код (~361 строка):
if (!empty($data['filter_name'])) {
$sql .= " AND pd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'";
}
- После него вставляем:
if (isset($this->request->get['filter_sku']) && !empty($data['filter_sku'])) {
$sql .= " AND p.sku = '" . $this->db->escape($data['filter_sku']) . "'";
}
- Сохраняем, обновляем кэш.
- Открываем сайт/admin/view/template/catalog/product_list.twig
- Находим код (~68 строка):
<div class="form-group">
<label class="control-label" for="input-quantity">{{ entry_quantity }}</label>
<input type="text" name="filter_quantity" value="{{ filter_quantity }}" id="input-quantity" class="form-control" />
</div>
- После него вставляем:
<div class="form-group">
<label class="control-label" for="input-sku">Артикул</label>
<input type="text" name="filter_sku" value="{{ filter_sku }}" id="input-sku" class="form-control" />
</div>
- В том же файле находим (~227 строка):
var filter_status = $('select[name=\'filter_status\']').val();
- После него вставляем:
var filter_sku = $('input[name=\'filter_sku\']').val();
if (filter_sku) {
url += '&filter_sku=' + encodeURIComponent(filter_sku);
}
- Сохраняем, обновляем кэш.
- Готово.