Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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


Recommended Posts

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

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

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

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

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

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

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

 

Link to post
Share on other sites

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

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

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

 

Link to post
Share on other sites
5 минут назад, chukcha сказал:

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

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

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

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

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

Link to post
Share on other sites

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

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

 

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

 

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

Link to post
Share on other sites

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

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

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

 

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

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

Именно

Link to post
Share on other sites
2 минуты назад, chukcha сказал:

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

 

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites
17 минут назад, halfhope сказал:

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

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

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

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

Link to post
Share on other sites

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

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

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

 

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

 

 

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

 

Edited by halfhope
Link to post
Share on other sites

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

 

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

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

 

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

 

Link to post
Share on other sites

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

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

 

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

 

Link to post
Share on other sites

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

 

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

 

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

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

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

Link to post
Share on other sites

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));
}

 

Link to post
Share on other sites

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));
}

 

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.