OpenCart.Показать фильтр «Нет на складе» в панели управления списком товаров - PullRequest
0 голосов
/ 26 апреля 2018

Друг, помогите пожалуйста добавить фильтр "Нет в наличии" в админ-панели списка товаров.

enter image description here

Что сделано:

Добавить в product_list

      <div class="form-group">            
        <label class="control-label" for="input-stock-status">{{ entry_stock_status }}</label>
          <select name="stock_status_id" id="input-stock-status" class="form-control">
            {% for stock_status in stock_statuses %}
            {% if stock_status.stock_status_id == stock_status_id %}
            <option value="{{ stock_status.stock_status_id }}" selected="selected">{{ stock_status.name }}</option>
            {% else %}
            <option value="{{ stock_status.stock_status_id }}">{{ stock_status.name }}</option>
            {% endif %}
            {% endfor %}
          </select>
      </div>

В столбец, где {{ product.status }} я добавил {{ product.stock_status }}, но я понимаю, что это неправильно: (

Теперь нужно добавить некоторую информациюк контроллеру или модели?

1 Ответ

0 голосов
/ 26 апреля 2018

В admin / controller / catalog / product.php

вокруг строки №.259 добавить: -

if (isset($this->request->get['filter_stock_status'])) {
        $filter_stock_status = $this->request->get['filter_stock_status'];
    } else {
        $filter_stock_status = '';
    }
$this->load->model('localisation/stock_status');

    $data['stock_statuses'] = $this->model_localisation_stock_status->getStockStatuses();

добавить ( везде после filter_status (важно) ):

if (isset($this->request->get['filter_stock_status'])) {
        $url .= '&filter_stock_status=' . $this->request->get['filter_stock_status'];
    }

после:

if (isset($this->request->get['filter_status'])) {
        $url .= '&filter_status=' . $this->request->get['filter_status'];
    }

добавить:

'filter_stock_status' => $filter_stock_status,

после:

'filter_quantity' => $filter_quantity,
        'filter_status'   => $filter_status,

добавить:

$data['filter_stock_status'] = $filter_stock_status;

после:

$data['filter_status'] = $filter_status;

в product_list.twig:

добавить:

<div class="form-group">
          <label class="control-label" for="input-stock-status">{{ entry_stock_status }}</label>
          <select name="filter_stock_status" id="input-stock-status" class="form-control">
             <option value="" {% if filter_stock_status == "" %} {{ 'selected' }} {% endif %}></option>
            {% for stock_status in stock_statuses %}
                <option value="{{ stock_status.stock_status_id}}" {% if filter_stock_status == stock_status.stock_status_id %} {{ 'selected' }} {% endif %}>{{ stock_status.name }}</option>
            {% endfor %}
            <option value="-1" {% if filter_stock_status == -1 %} {{ 'selected' }} {% endif %}>All except out of stock</option>
          </select>
        </div>

добавить:

var filter_stock_status = $('select[name=\'filter_stock_status\']').val();

if (filter_stock_status !== '') {
    url += '&filter_stock_status=' + encodeURIComponent(filter_stock_status);
}

после:

var filter_status = $('select[name=\'filter_status\']').val();

if (filter_status !== '') {
    url += '&filter_status=' + encodeURIComponent(filter_status);
}

в admin / model / catalog / product.php:

add:

if (isset($data['filter_stock_status']) && $data['filter_stock_status'] !== '' ) {
        if($data['filter_stock_status'] == -1){
            $sql .= " AND p.stock_status_id <> 5";
        }elseif($data['filter_stock_status'] != -1){    
            $sql .= " AND p.stock_status_id = '" . (int)$data['filter_stock_status'] . "'";
        }
    }

в функции getProducts

до:

$sql .= " GROUP BY p.product_id";

добавить:

if (isset($data['filter_stock_status']) && $data['filter_stock_status'] !== '' ) {
        if($data['filter_stock_status'] == -1){
            $sql .= " AND p.stock_status_id <> 5";
        }elseif($data['filter_stock_status'] != -1){    
            $sql .= " AND p.stock_status_id = '" . (int)$data['filter_stock_status'] . "'";
        }
    }

в функции getTotalProducts ($ data = array ())

до:

    $query = $this->db->query($sql);
...