Opencart - Улучшенный Поиск При Вводе Атрибутов К Товарам (не Только По Началу Слова)

Тема в разделе "Установка, обновление, настройка", создана пользователем admin, 18 июн 2016.

  1. TopicStarter Overlay
    Offline

    admin Команда форума Администратор

    Сообщения:
    1.318
    Симпатии:
    7.465
    Репутация:
    72
    03-15-opencart-uluchenie-pri-dobavlenii-atributa-tovaru.jpg
    Не очень удобное решение, добавлять атрибут к товару выбором из выпадающего списка, который выпадает при начале введения названия атрибута. Если я не помню точное название атрибута, я не смогу начать его писать и он не выпадет, надо лезть список атрибутов.

    Можно существенно облегчить себе ввод атрибутов, внеся совсем небольшое исправление, которое даст:

    • поиск любого вхождения введённых символов, а не только с начала названий атрибутов;
    • при вводе "." в пустое поле показывается полный список атрибутов, остаётся только выбрать необходимый.
    В admin/model/catalog/attribute.php:

    Код:
    public function getAttributes($data = array()) {
    $sql = "SELECT *, (SELECT agd.name FROM " . DB_PREFIX . "attribute_group_description agd WHERE agd.attribute_group_id = a.attribute_group_id AND agd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS attribute_group FROM " . DB_PREFIX . "attribute a LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id) WHERE ad.language_id = '" . (int)$this->config->get('config_language_id') . "'";
    
    if (isset($data['filter_name']) && !is_null($data['filter_name'])) {
    //$sql .= " AND LCASE(ad.name) LIKE '" . $this->db->escape(mb_strtolower($data['filter_name'], 'UTF-8')) . "%'";
    if( $data['filter_name'] == '.' )
    $sql .= " AND LCASE(ad.name) LIKE '%'";
    else
    $sql .= " AND LCASE(ad.name) LIKE '%" . $this->db->escape(mb_strtolower($data['filter_name'], 'UTF-8')) . "%'";
    }