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);
}- Сохраняем, обновляем кэш.
- Готово.