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

админка: заменить выбор значения опции из списка на autocomplete


ambalocha69

Recommended Posts

Приветствую коллеги!

Может кто сталкивался с подобным и есть решение

Имеем опцию, в которой 42К значений

Имеем ряд товаров в которых по 3-6К значений этой опции

Ежу понятно, что редактировать такой товар в админке это пытка.

Логичным выглядит замена селекта на autocomplete

И думаю, что для нового ocStore такая фича тоже будет полезна.

 

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

45 минут назад, ambalocha69 сказал:

Имеем опцию, в которой 42К значений

Для такого количества опций, нужно менять подход к редактированию карточки товара
У Даниеля в 3.0.0.0 была вынесена  вкладка опций за пределы редактирования карточки товара

 

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

5 минут назад, chukcha сказал:

Для такого количества опций, нужно менять подход к редактированию карточки товара

о чем и речь - autocomplete просто напрашивается

6 минут назад, chukcha сказал:

У Даниеля в 3.0.0.0 была вынесена  вкладка опций за пределы редактирования карточки товара

это через пятую точку автогеном

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

42 минуты назад, ambalocha69 сказал:

Может кто сталкивался с подобным и есть решение

 

Думаю, это решение из разряда "по ситуации", дел на пару часов. Добавление в сборку повлечет проблемы с совместимостью.

 

Можно заменить селекты на jquery select2, там есть поиск по значениям.

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

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

Можно заменить селекты на jquery select2, там есть поиск по значениям.

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

 

5 минут назад, halfhope сказал:

Думаю, это решение из разряда "по ситуации"

Именно

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

2 минуты назад, chukcha сказал:

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

 

Там и автокомплит есть, насколько помню.

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

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

ам и автокомплит есть, насколько помню.

ДЕйствительно, тогда в чем вопрос?

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

17 минут назад, halfhope сказал:

Можно заменить селекты на jquery select2

никогда не работал с ним

насколько он утяжеляет страницу?

если будет например 3000 таких элементов?

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

7 минут назад, ambalocha69 сказал:

насколько он утяжеляет страницу?

если будет например 3000 таких элементов?

 

Не знаю, но часто использую его в своих проектах, включая модули.

 

 

В догонку, может пригодится. "Оптимизация опций и аттрибутов в OpenCart"

 

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

2 минуты назад, halfhope сказал:

 

  Скрыть контент

В догонку, может пригодится. "Оптимизация опций и аттрибутов в OpenCart"

 

ссылка не рабочая

 

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

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

 

Рабочая, просто мой блог прилег отдохнуть)

 

здесь другая проблема - оптимизация запросов не поможет

на странице тысячи селектов, в каждом 42К значений

и как следствие тупая нехватка памяти

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

8 минут назад, ambalocha69 сказал:

здесь другая проблема

Я знаю)

26 минут назад, halfhope сказал:

В догонку, может пригодится.

 

Пример из модуля

<link rel="stylesheet" href="view/javascript/jquery/select2/select2.min.css">
<link rel="stylesheet" href="view/javascript/jquery/select2/select2-bootstrap.min.css">
<script src="view/javascript/jquery/select2/select2.full.min.js"></script>

<select name="products[]" id="products_search" class="products" multiple="multiple">
  <?php if ($settings['products_parsed']): ?>
  <?php foreach ($settings['products_parsed'] as $product): ?>
  <option value="<?php echo $product['id']; ?>" selected><?php echo $product['name']; ?></option>
  <?php endforeach ?>
  <?php endif ?>
</select>

<script>
    $('#products_search').select2({
      dropdownParent: $('#el_settings'),
      theme: "bootstrap",
      placeholder: "<?php echo $text_form_autocomplete ?>",
      multiple: true,
      closeOnSelect: false,
      ajax: {
        url: '<?php echo $product_autocomplete ?>',
        dataType: 'json'
      }
    });
</script>
public function product_autocomplete()
{
    
    $json = array();
    
    if (isset($this->request->get['term'])) {
        
        $this->load->model('catalog/product');
        $this->load->model('catalog/option');
        
        if (isset($this->request->get['limit'])) {
            $limit = $this->request->get['limit'];
        } else {
            $limit = 5;
        }
        
        $filter_data = array(
            'filter_name' => $this->request->get['term'],
            'filter_model' => '',
            'start' => 0,
            'limit' => $limit
        );
        
        $results = $this->model_catalog_product->getProducts($filter_data);
        
        foreach ($results as $result) {
            $json['results'][] = array(
                'id' => $result['product_id'],
                'text' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8'))
            );
        }
    }
    
    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($json));
}

 

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

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

Я знаю)

 

Пример из модуля


<link rel="stylesheet" href="view/javascript/jquery/select2/select2.min.css">
<link rel="stylesheet" href="view/javascript/jquery/select2/select2-bootstrap.min.css">
<script src="view/javascript/jquery/select2/select2.full.min.js"></script>

<select name="products[]" id="products_search" class="products" multiple="multiple">
  <?php if ($settings['products_parsed']): ?>
  <?php foreach ($settings['products_parsed'] as $product): ?>
  <option value="<?php echo $product['id']; ?>" selected><?php echo $product['name']; ?></option>
  <?php endforeach ?>
  <?php endif ?>
</select>

<script>
    $('#products_search').select2({
      dropdownParent: $('#el_settings'),
      theme: "bootstrap",
      placeholder: "<?php echo $text_form_autocomplete ?>",
      multiple: true,
      closeOnSelect: false,
      ajax: {
        url: '<?php echo $product_autocomplete ?>',
        dataType: 'json'
      }
    });
</script>

public function product_autocomplete()
{
    
    $json = array();
    
    if (isset($this->request->get['term'])) {
        
        $this->load->model('catalog/product');
        $this->load->model('catalog/option');
        
        if (isset($this->request->get['limit'])) {
            $limit = $this->request->get['limit'];
        } else {
            $limit = 5;
        }
        
        $filter_data = array(
            'filter_name' => $this->request->get['term'],
            'filter_model' => '',
            'start' => 0,
            'limit' => $limit
        );
        
        $results = $this->model_catalog_product->getProducts($filter_data);
        
        foreach ($results as $result) {
            $json['results'][] = array(
                'id' => $result['product_id'],
                'text' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8'))
            );
        }
    }
    
    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($json));
}

 

идея ясна, спасибо огромное!

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

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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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