Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Проблема с добавлением категории состоящей из одной буквы G


Recommended Posts

Всем привет, на сайте имеются категории состоящие из одной буквы, если вводить в поиск эту буквы категории находятся какие угодно только не те которые нужны, подскажите как добавить нужную категорию? Или не ужели единственный способ добавления переименовать категорию в большее количество символов?И еще вопрос есть ли плагин что бы была возможность добавлять категории как во второй версии Opencart ???

Всем спассибо

category.png

category2.png

Змінено користувачем Dimusik
Надіслати
Поділитися на інших сайтах


On 7/12/2020 at 10:51 PM, kotus2002 said:

Ну, если простым путем - можно увеличить лимит автозаполнения, где надо admin/controler/catalog/*.php. Измените limit=>5 в limit=> "сколько надо"

спасибо а что значит где надо, мне надо в разделе где я категории указываю, какой это должен быть файл,подскажите?

Надіслати
Поділитися на інших сайтах


в данном виде никак. допустим вы лимит поставите 10, а строка окажется 11, зависит от количество категорий

нужно ковырять в модели Category функцию getCategories

лимит меняется в admin/controller/catalog/category.php

    public function autocomplete() {
        $json = array();

        if (isset($this->request->get['filter_name'])) {
            $this->load->model('catalog/category');

            $filter_data = array(
                'filter_name' => $this->request->get['filter_name'],
                'sort'        => 'name',
                'order'       => 'ASC',
                'start'       => 0,
                'limit'       => 5
            );

            $results = $this->model_catalog_category->getCategories($filter_data);
 

Надіслати
Поділитися на інших сайтах


9 минут назад, lexxkrt сказал:

в данном виде никак. допустим вы лимит поставите 10, а строка окажется 11, зависит от количество категорий

нужно ковырять в модели Category функцию getCategories

лимит меняется в admin/controller/catalog/category.php

    public function autocomplete() {
        $json = array();

        if (isset($this->request->get['filter_name'])) {
            $this->load->model('catalog/category');

            $filter_data = array(
                'filter_name' => $this->request->get['filter_name'],
                'sort'        => 'name',
                'order'       => 'ASC',
                'start'       => 0,
                'limit'       => 5
            );

            $results = $this->model_catalog_category->getCategories($filter_data);
 

Какая проблема выставить лимит 50, 100, 200? Речь же о простом и быстром решении. Вы знаете другое решение? Более сложное, возможно, более правильное? Хотите помочь человеку? Выкладывайте подробную инструкцию, что где добавить/менять итд. Какой толк человеку от "мистифицированного" варианта "ковырять в модели Category функцию getCategories"? Поковыряйтесь, добейтесь своего решения и выложите его в качестве помощи. Или пишите в личку человеку с предложением платных услуг. 

Надіслати
Поділитися на інших сайтах


57 минут назад, kotus2002 сказал:

Вы знаете другое решение?

первое) не называть группы одной буквой.

второе) редактировать в модели функцию. вместо cd2.name поставить cd1.name убрать в like первый знак процента чтобы поиск был сначала названия группы.

это быстрые решения

Надіслати
Поділитися на інших сайтах


4 минуты назад, lexxkrt сказал:

первое) не называть группы одной буквой.

второе) редактировать в модели функцию. вместо cd2.name поставить cd1.name убрать в like первый знак процента чтобы поиск был сначала названия группы.

это быстрые решения

Видите, это не так сложно помогать другим)))

Надіслати
Поділитися на інших сайтах


10 минут назад, kotus2002 сказал:

Видите, это не так сложно помогать другим)))

это что был упрек? сделать абы как и сделать правильно это не тоже самое.

вообщем то достаточно просто убрать первый знак процента, cd2 на cd1 менять необязательно. но это не решает проблему. да количество выведенных результатов уменьшится но тоже не решит проблему если названий групп много.

Надіслати
Поділитися на інших сайтах


вообщем решение, не знаю насколько правильное, но вроде работает с ограниченной тестовой базой

в autocomplete (admin/controller/catalog/category.php)

$filter_data = array(
                'filter_name' => $this->request->get['filter_name'],
                //'sort'        => 'cd2.name,name', // раньше было просто name

                'sort'        => empty($this->request->get['filter_name'])?'name':'cd2.name,name',
                'order'       => 'ASC',
                'start'       => 0,
                'limit'       => 5 // можно больше поставить
            );

закомментировать

//array_multisort($sort_order, SORT_ASC, $json);

если не комментировать то происходит сортировка выдачи и нужная строка может быть где угодно в списке, но видима

в модели (admin/model/catalog/category.php) getCategories

убрать первый % в LIKE

отредактировать сортировку

        $sort_data = array(
            'name',
            'cd2.name,name',
            'sort_order'
        );


если нужен поиск не с начала слова то вначале слова можно ввести %, например '%G', а если по частям двух слов то вместо пробела ввести % 'Ga%Ga'

Змінено користувачем lexxkrt
Надіслати
Поділитися на інших сайтах


В 17.07.2020 в 14:11, kotus2002 сказал:

Видите, это не так сложно помогать другим)))

Вы упреком заставили @lexxkrt сделать определенную работу, которая ТС оказалась не нужна. Это не значит, что никому не нужна, но все же.

Вот и результат

1 час назад, Dimusik сказал:

Всем спасибо увеличил значение но проблему это не решает

Вывод: если человек не готов ( не знаком) ковырять код, то и не нужно ему объяснять - Вы тратите время и он  тратит время, а мог бы заняться своей прямой обязанностью - развитием магазина :) а допилы оставить программистам :).

 

П.С. это я не от того, что шибко умный - я сам юзер, только опытный - не одну неделю потратил на бесцельное ковыряние в коде, много понял и теперь плачу программисту :)

Надіслати
Поділитися на інших сайтах


9 часов назад, pawana сказал:

Вы упреком заставили @lexxkrt сделать определенную работу, которая ТС оказалась не нужна. Это не значит, что никому не нужна, но все же.

Вот и результат

Вывод: если человек не готов ( не знаком) ковырять код, то и не нужно ему объяснять - Вы тратите время и он  тратит время, а мог бы заняться своей прямой обязанностью - развитием магазина :) а допилы оставить программистам :).

 

П.С. это я не от того, что шибко умный - я сам юзер, только опытный - не одну неделю потратил на бесцельное ковыряние в коде, много понял и теперь плачу программисту :)

Вы неверно поняли посыл. Как впрочем и lexxkrt

Знаете анекдот про то, как собаки хвалились своими шрамами? Это не тот случай))) Мой посыл был такой - знаете простое и быстрое решение - пишите, это не стоит того, чтобы ‘раздувать щеки’. И я написал это простое решение, чтобы посмотреть, будет ли человек это делать, получит ли продолжение тема. Если решение так сказать ‘монетизируемое’, допустим, на него нужно потратить 20-30 минут времени или вы когда-то это сделали и знаете, что это не вопрос правки одной строки - пишите в личку с предложением услуги. 

Вы думаете я не плачу за доработку в своих проектах? Каждый! Божий! День! Иногда по нескольку раз)))

  • +1 1
Надіслати
Поділитися на інших сайтах


4 часа назад, kotus2002 сказал:

И я написал это простое решение

Дальше что? ваше решение сколь просто столь же бесполезно, если групп больше 5-10-15 начинающихся или содержащих букву G

16 часов назад, Dimusik сказал:

увеличил значение но проблему это не решает

 

указанное мной решение должно работать, в указанном мной способе сперва получается группа название которой равно указанной строке в строке поиска, потом те которые начинаются с указанной строки.

можно даже сортировку оставить переписав ее

 

        $sort_order = array();

        $first = array_shift($json);
        foreach ($json as $key => $value) {
            $sort_order[$key] = $value['name'];
        }
        array_multisort($sort_order, SORT_ASC, $json);
        array_unshift($json,$first);
 

Надіслати
Поділитися на інших сайтах


2 часа назад, lexxkrt сказал:

Дальше что? ваше решение сколь просто столь же бесполезно, если групп больше 5-10-15 начинающихся или содержащих букву G

 

указанное мной решение должно работать, в указанном мной способе сперва получается группа название которой равно указанной строке в строке поиска, потом те которые начинаются с указанной строки.

можно даже сортировку оставить переписав ее

 

        $sort_order = array();

        $first = array_shift($json);
        foreach ($json as $key => $value) {
            $sort_order[$key] = $value['name'];
        }
        array_multisort($sort_order, SORT_ASC, $json);
        array_unshift($json,$first);
 

Да не подошло решение - и слава Богу... Я же не претендую на истину в последней инстанции.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.