Фильтр товара по производителю и категориям в админке

Тема в разделе "Готовые модули и модификаторы. Бесплатно", создана пользователем tsap, 19 июн 2015.

  1. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    поставил у себя на сборку Version 2.1.0.2 (rs.1) все лягло замечательно и даже работает
    посмотрите у себя в логе модификаторов, какие выдает ошибки
    в идеале должно быть так
    Код:
    MOD: Filter Category and Manufacturer for Admin
    FILE: admin/language/russian/catalog/product.php
    CODE: $_['column_model']           = 'Модель';
    LINE: 23
    CODE: $_['entry_model']            = 'Модель';
    LINE: 41
    FILE: admin/model/catalog/product.php
    CODE: $sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
    LINE: 346
    CODE: $sql = "SELECT COUNT(DISTINCT p.product_id) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";
    LINE: 612
    CODE: if (!empty($data['filter_model'])) {
    LINE: 363
    LINE: 640
    CODE: 'p.model',
    LINE: 387
    FILE: admin/controller/catalog/product.php
    CODE: if (isset($this->request->get['filter_model'])) {
    LINE: 249
    CODE: if (isset($this->request->get['filter_model'])) {
    LINE: 40
    LINE: 100
    LINE: 162
    LINE: 224
    LINE: 337
    LINE: 497
    LINE: 544
    LINE: 751
    CODE: 'filter_model'      => $filter_model,
    LINE: 391
    CODE: $data['filter_model'] = $filter_model;
    LINE: 591
    CODE: data['column_model'] = $this->language->get('column_model');
    LINE: 453
    CODE: $data['entry_model'] = $this->language->get('entry_model');
    LINE: 464
    LINE: 642
    CODE: $data['sort_model'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.model' . $url, 'SSL');
    LINE: 542
    CODE: $data['products'][] = array(
    LINE: 441
    CODE: 'model'      => $result['model'],
    LINE: 449
    FILE: admin/view/template/catalog/product_list.tpl
    CODE: <button type="button" id="button-filter" class="btn btn-primary pull-right"><i class="fa fa-search"></i> <?php echo $button_filter; ?></button>
    LINE: 83
    CODE: var filter_model = $('input[name=\'filter_model\']').val();
    LINE: 204
    CODE: //--></script></div>
    LINE: 313
    CODE: <td class="text-right"><?php if ($sort == 'p.quantity') { ?>
    LINE: 121
    CODE: <td class="text-right"><?php if ($product['quantity'] <= 0) { ?>
    LINE: 161
     
  2. iam.ok

    iam.ok Новичок

    Сообщения:
    1
    Симпатии:
    0
    на 2 1 0 2 тупо закинул папку систем - все ровно заработало, надеюсь
     
  3. 6yka

    6yka Пользователь

    Сообщения:
    37
    Симпатии:
    1
    По производителю фильтрует, а по категории нет
    Version 2.1.0.1 (rs.2)

    ошибка:
    Код:
    Notice: Error: Unknown column 'p2c.category_id' in 'where clause'
    Error No: 1054
    SELECT * FROM motoekip_product p LEFT JOIN motoekip_product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '1' AND p2c.category_id = '65' GROUP BY p.product_id ORDER BY pd.name ASC LIMIT 0,50 in *****/public_html/system/library/db/mysqli.php on line 41Notice: Trying to get property of non-object in*****/public_html/system/storage/modification/admin/model/catalog/product.php on line510Warning: Invalid argument supplied for foreach() in *****/public_html/system/storage/modification/admin/controller/catalog/product.php on line 448
     
  4. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    в логе модификаторов ошибки какие-нибудь есть?
    похоже почему-то не выполнилось вот это
    PHP:
    <file path="admin/model/catalog/product.php">
            <
    operation>
                <
    search><![CDATA[
                    
    $sql "SELECT * FROM " DB_PREFIX "product p LEFT JOIN " DB_PREFIX "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
                    ]]>
                </
    search>
                <
    add position="replace"><![CDATA[
                    
    $sql "SELECT * FROM " DB_PREFIX "product p LEFT JOIN " DB_PREFIX "product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN " DB_PREFIX "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
                    ]]>
                </
    add>
            </
    operation>
     
  5. 6yka

    6yka Пользователь

    Сообщения:
    37
    Симпатии:
    1
    Вот что в логах по этому модулю

    Код:
    ----------------------------------------------------------------
    MOD: Filter Category and Manufacturer for Admin
    FILE: admin/language/russian/catalog/product.php
    CODE: $_['column_model']           = 'Модель';
    LINE: 23
    CODE: $_['entry_model']            = 'Модель';
    LINE: 41
    CODE: $sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
    NOT FOUND!
    CODE: $sql = "SELECT COUNT(DISTINCT p.product_id) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";
    LINE: 620
    CODE: if (!empty($data['filter_model'])) {
    LINE: 370
    LINE: 648
    CODE: 'p.model',
    LINE: 395
    CODE: if (isset($this->request->get['filter_model'])) {
    LINE: 277
    CODE: if (isset($this->request->get['filter_model'])) {
    LINE: 63
    LINE: 125
    LINE: 188
    LINE: 251
    LINE: 367
    LINE: 533
    LINE: 580
    LINE: 789
    CODE: 'filter_model'      => $filter_model,
    LINE: 423
    CODE: $data['filter_model'] = $filter_model;
    LINE: 629
    CODE: data['column_model'] = $this->language->get('column_model');
    LINE: 489
    CODE: $data['entry_model'] = $this->language->get('entry_model');
    LINE: 500
    LINE: 680
    CODE: $data['sort_model'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.model' . $url, 'SSL');
    LINE: 578
    CODE: $data['products'][] = array(
    LINE: 476
    CODE: 'model'      => $result['model'],
    LINE: 484
    CODE: <button type="button" id="button-filter" class="btn btn-primary pull-right"><i class="fa fa-search"></i> <?php echo $button_filter; ?></button>
    LINE: 86
    CODE: var filter_model = $('input[name=\'filter_model\']').val();
    LINE: 210
    CODE: //--></script></div>
    LINE: 319
    CODE: <td class="text-right"><?php if ($sort == 'p.quantity') { ?>
    LINE: 124
    CODE: <td class="text-right"><?php if ($product['quantity'] <= 0) { ?>
    LINE: 164
     
  6. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    ну собственно как я и говорил, не нашел строчку
    Код:
    CODE: $sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
    NOT FOUND!
    откройте файл admin\model\catalog\product.php
    посмотрите что у вас после
    PHP:
    public function getProducts($data = array()) {
    приблизительно строка 347
     
    6yka нравится это.
  7. 6yka

    6yka Пользователь

    Сообщения:
    37
    Симпатии:
    1
    Код:
    $sql = "SELECT * FROM " . DB_PREFIX . "product p
    LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)
    WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
     
  8. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    строка именно такая с переносами?
    по идее должно быть в одну строку
    Код:
    $sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
     
    6yka нравится это.
  9. 6yka

    6yka Пользователь

    Сообщения:
    37
    Симпатии:
    1
    да, с переносами. Скопировал как есть
    Version 2.1.0.1 (rs.2)
     
  10. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    или в модификаторе перепишите, или в файл admin\model\catalog\product.php
    ЗЫ: в сборке Version 2.1.0.2 (rs.1) все в одну строку, не поленился скачать Version 2.1.0.1 (rs.2), там тоже все в одну строку
     
  11. 6yka

    6yka Пользователь

    Сообщения:
    37
    Симпатии:
    1
    спасибо, поправил код в одну строчку и все заработало.
    в этом модуле выводятся доп столбцы "Категория" и "Производитель".
    Можно как-то дописать в этот мод вывод столбца с ID товара?
     
  12. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    можно решить все, если есть... желание
     
  13. 6yka

    6yka Пользователь

    Сообщения:
    37
    Симпатии:
    1
    Вы могли бы это сделать? Назовите цену :)
     
  14. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    почему сами не хотите разобраться, не сложно ведь пару строк добавить
     
    callipso нравится это.
  15. yourock

    yourock Новичок

    Сообщения:
    2
    Симпатии:
    0
    tsap, при сортировке товаров по производителю (по убыванию/по возрастанию) в списке товаров (в таблице) товарные позиции сортируются не согласно алфавита, а согласно manufacturer_id.
    т.е. производитель на букву "Г" может быть выше производителя на букву "Б", если у него ID меньше. как-то так.
     
    Последнее редактирование: 16 фев 2016
  16. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    Согласен, это проблема, о ней я упомянул в первом посте
    Вопрос открыт, предложите решение
     
  17. callipso

    callipso Новичок

    Сообщения:
    4
    Симпатии:
    0
    Добрый день, скажите, пожалуйста, как сбросить/очистить фильтр? После поиска и работы с нужным производителем, я хочу вернуться к основному списку товаров. Мне выдало ошибку:
    Notice: Undefined index: filter_manufacturer in /www/system/storage/modification/admin/controller/catalog/product.php on line275Notice: Undefined index: filter_manufacturer in www/system/storage/modification/admin/controller/catalog/product.php on line335Notice: Undefined index: filter_manufacturer in www/system/storage/modification/admin/controller/catalog/product.php on line529Notice: Undefined index: filter_manufacturer in www/system/storage/modification/admin/controller/catalog/product.php on line581

    if (isset($this->request->get['filter_manufacturer_id'])) {
    стр. 275 $filter_manufacturer = $this->request->get['filter_manufacturer'];
    $filter_manufacturer_id = $this->request->get['filter_manufacturer_id'];
    } else {
    $filter_manufacturer = null;
    $filter_manufacturer_id = null;
    __________
    if (isset($this->request->get['filter_category'])) {
    $url .= '&filter_category=' . $this->request->get['filter_category'] . '&filter_category_id=' . $this->request->get['filter_category_id'] . '&filter_sub_category=true';
    }
    if (isset($this->request->get['filter_manufacturer_id'])) {
    стр. 335 $url .= '&filter_manufacturer=' . $this->request->get['filter_manufacturer'] . '&filter_manufacturer_id=' . $this->request->get['filter_manufacturer_id'];
    }
    ____________
    if (isset($this->request->get['filter_category'])) {
    $url .= '&filter_category=' . $this->request->get['filter_category'] . '&filter_category_id=' . $this->request->get['filter_category_id'] . '&filter_sub_category=true';
    }
    if (isset($this->request->get['filter_manufacturer_id'])) {
    стр. 529 $url .= '&filter_manufacturer=' . $this->request->get['filter_manufacturer'] . '&filter_manufacturer_id=' . $this->request->get['filter_manufacturer_id'];
    }
    ____________
    581 тоже самое, что в 335 и 539

    Спасибо!
     
  18. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    и как вы это делаете?
    обычно очищаешь все поля Производитель, Название товара и тд, нажимаешь кнопку Фильтр и получаем весь список товара
    советую брать мод из 34 поста, там подправлены кое какие ошибки
     
  19. callipso

    callipso Новичок

    Сообщения:
    4
    Симпатии:
    0
    Да, именно, так делала. И модификатор из 34 поста, что- то не так пошло у меня. :(
    я остаюсь в том же фильтре с ошибкой вверху страницы, это происходит только с поиском по Производителю, с поиском по Категории все отлично.
     

    Вложения:

    Последнее редактирование: 24 фев 2016
  20. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    поправил мод, прикрепил к первому посту, все лишние удалил