RHCk Опубликовано: декабря 3, 2015 Жалоба Поделиться Опубликовано: декабря 3, 2015 Приветствую! Есть необходимость в заказ покупателя добавить товар. Заходим в редактирование заказа -> Вкладка 2.Товары, раздел Добавить товар(ы), поле Выберите товар. Подбор товара - при наборе наименования товара поиск осуществляется с начала наименования. Вопрос 1 - можно ли сделать подбор по сочетанию символов в любом месте наименования товара и артикула? Вопрос 2 - можно ли это использовать для поиска товара покупателем? Вопрос 3 - исключительно интереса ради, все пользуют обычный поиск OC или всё же прикручивают "живой" поиск? С уважением. P.S. Нашёл модуль поиска (для v2.0.X), могу выложить. Возможно кто-то сможет проверить работоспособность и "допилить". Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
WarStyle Опубликовано: декабря 3, 2015 Жалоба Поделиться Опубликовано: декабря 3, 2015 Версия движка? У меня в 1.5.6.4 при вводе первых букв названия товара выпадает список в админке. Касаемо поиска в магазине, стоит живой поиск. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
RHCk Опубликовано: декабря 3, 2015 Автор Жалоба Поделиться Опубликовано: декабря 3, 2015 OC.PRO v2.1.0.1.8 У меня на несколько другой сборке версии 1.5.1.1.2 тоже стоит. Интересно решение для OC.PRO. Просто не совсем понятно, либо все используют сторонние шаблоны уже с живым поиском, либо используют платные модули, либо он просто никому не нужен:) В приобретении модуля проблемы нет, не понятна невостребованность данного функционала. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
WarStyle Опубликовано: декабря 3, 2015 Жалоба Поделиться Опубликовано: декабря 3, 2015 Модуль полезный, если большое количество товара, пользователю легче найти интересующий товар) Я думаю должны быть уже и бесплатные решения, в платных просто больше фишек. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
RHCk Опубликовано: декабря 3, 2015 Автор Жалоба Поделиться Опубликовано: декабря 3, 2015 А по Вопросу 1 есть мнения?:) Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Это популярное сообщение. savage4pro Опубликовано: декабря 3, 2015 Это популярное сообщение. Жалоба Поделиться Опубликовано: декабря 3, 2015 admin ModelCatalogProduct -> getProducts $sql .= " AND pd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; заменить на $sql .= " AND pd.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; и то же самое с filter_model RHCk 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
RHCk Опубликовано: декабря 3, 2015 Автор Жалоба Поделиться Опубликовано: декабря 3, 2015 Работает. По наименованию. С артикулом так не решить? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: декабря 3, 2015 Жалоба Поделиться Опубликовано: декабря 3, 2015 читаем внимательней 5 часов назад, savage4pro сказал: и то же самое с filter_model Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
RHCk Опубликовано: декабря 4, 2015 Автор Жалоба Поделиться Опубликовано: декабря 4, 2015 Я сделал две замены: Замена 1 (в строке 436): $sql .= " AND pd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; $sql .= " AND pd.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; Замена 2 (в строке 440): $sql .= " AND p.model LIKE '" . $this->db->escape($data['filter_model']) . "%'"; $sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_model']) . "%'"; Поиск по сочетанию в наименовании работает, по артикулу не работает. Что-то сделал не так?:) Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Это популярное сообщение. savage4pro Опубликовано: декабря 4, 2015 Это популярное сообщение. Жалоба Поделиться Опубликовано: декабря 4, 2015 так это же только модель, теперь есть возможность поиска товаров по любой части наименования либо артикула там, где собственно и происходит вызов метода вашу же задачу можно решить например так вот ваша форма заказа admin/view/template/sale/order_form.tpl url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request), как вы можете видеть, в параметрах передается filter_name, и ничего больше а если вам надо, чтобы поиск был и по наименованию, и по артикулу, тогда эту строку надо заменить на такую url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request) + '&filter_model=' + encodeURIComponent(request), а в ModelCatalogProduct -> getProducts заменить if (!empty($data['filter_name'])) { $sql .= " AND pd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; } if (!empty($data['filter_model'])) { $sql .= " AND p.model LIKE '" . $this->db->escape($data['filter_model']) . "%'"; } на if (!empty($data['filter_name']) && empty($data['filter_model'])) { $sql .= " AND pd.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } elseif (!empty($data['filter_model']) && empty($data['filter_name'])) { $sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_model']) . "%'"; } elseif (!empty($data['filter_model']) && !empty($data['filter_name'])) { $sql .= " AND (pd.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; $sql .= " OR p.model LIKE '%" . $this->db->escape($data['filter_model']) . "%')"; } но это плохой вариант как минимум потому, что в данной реализации при одновременном заполнении наименования и артикула будут находиться товары, имеющие либо одно, либо другое совпадение, но не оба вместе как задумано изначально, и это плохо, например, для фильтра тех же товаров как вариант, во избежании коллизий, можете добавить свой метод фильтрации, ввести, например, какой-нибудь параметр filter_name_model_custom_get_all_products_i_want. отправлять его вместо filter_name в нужном шаблоне (напр. в том же admin/view/template/sale/order_form.tpl), дописать проверку и передачу параметра в модель в контроллере (ControllerCatalogProduct -> autocomplete) и дописать использование в запросе в модели (ModelCatalogProduct -> getProducts), дел на 3 минуты а вообще не рекомендую трогать модели, как и любые другие файлы ядра RHCk 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
RHCk Опубликовано: декабря 4, 2015 Автор Жалоба Поделиться Опубликовано: декабря 4, 2015 4 часа назад, savage4pro сказал: так это же только модель, теперь есть возможность поиска товаров по любой части наименования либо артикула там, где собственно и происходит вызов метода Так вот выше я и хотел сказать, что после произведенных мной двух замен, по наименованию всё отлично ищется, а по артикулу нет. Для общего развития ваше решение полезно (из предыдущего сообщения), но оставлю пока всё как есть. Сделанных изменений достаточно для работы. Ну и есть вероятность того, что это поправят со временем в первоисточнике. Спасибо! Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: декабря 4, 2015 Жалоба Поделиться Опубликовано: декабря 4, 2015 не за что ) 6 минут назад, RHCk сказал: по наименованию всё отлично ищется, а по артикулу нет по артикулу ищется, например, здесь ("Код товара") /admin/index.php?route=catalog/product Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
RHCk Опубликовано: декабря 4, 2015 Автор Жалоба Поделиться Опубликовано: декабря 4, 2015 Уговорили:))) Получается, что при очень большой необходимости проще будет здесь admin/index.php?route=sale/order/edit (вкладка Товар) добавить отдельное поле для кода товара, т.е. сделать аналогично тому, что имеется здесь admin/index.php?route=catalog/product. Или проще не будет?:) Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: декабря 4, 2015 Жалоба Поделиться Опубликовано: декабря 4, 2015 да можно, и не сложно ) Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Это популярное сообщение. savage4pro Опубликовано: декабря 6, 2015 Это популярное сообщение. Жалоба Поделиться Опубликовано: декабря 6, 2015 решение касается только шаблона редактирования заказа, поэтому дополнение писать - пустое занятие, по этой же причине и в howto ему делать особо нечего, засорять только шаблон admin/view/template/sale/order_form.tpl находим <label class="col-sm-2 control-label" for="input-product"><?php echo $entry_product; ?></label> <div class="col-sm-10"> <input type="text" name="product" value="" id="input-product" class="form-control" /> <input type="hidden" name="product_id" value="" /> </div> и после него добавляем <label class="col-sm-2 control-label" for="input-product-model"></label> <div class="col-sm-10"> <input type="text" name="product_model" value="" id="input-product-model" class="form-control" /> </div> находим блок $('#tab-product input[name=\'product\']').autocomplete({ ... }); заменяем его целиком на содержимое спойлера Скрытый текст var product_selection = function(item) { $('#tab-product input[name=\'product\']').val(item['name']); $('#tab-product input[name=\'product_model\']').val(item['model']); $('#tab-product input[name=\'product_id\']').val(item['value']); if (item['option'] != '') { html = '<fieldset>'; html += ' <legend><?php echo $entry_option; ?></legend>'; for (i = 0; i < item['option'].length; i++) { option = item['option'][i]; if (option['type'] == 'select') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <select name="option[' + option['product_option_id'] + ']" id="input-option' + option['product_option_id'] + '" class="form-control">'; html += ' <option value=""><?php echo $text_select; ?></option>'; for (j = 0; j < option['product_option_value'].length; j++) { option_value = option['product_option_value'][j]; html += '<option value="' + option_value['product_option_value_id'] + '">' + option_value['name']; if (option_value['price']) { html += ' (' + option_value['price_prefix'] + option_value['price'] + ')'; } html += '</option>'; } html += ' </select>'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'radio') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <select name="option[' + option['product_option_id'] + ']" id="input-option' + option['product_option_id'] + '" class="form-control">'; html += ' <option value=""><?php echo $text_select; ?></option>'; for (j = 0; j < option['product_option_value'].length; j++) { option_value = option['product_option_value'][j]; html += '<option value="' + option_value['product_option_value_id'] + '">' + option_value['name']; if (option_value['price']) { html += ' (' + option_value['price_prefix'] + option_value['price'] + ')'; } html += '</option>'; } html += ' </select>'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'checkbox') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <div id="input-option' + option['product_option_id'] + '">'; for (j = 0; j < option['product_option_value'].length; j++) { option_value = option['product_option_value'][j]; html += '<div class="checkbox">'; html += ' <label><input type="checkbox" name="option[' + option['product_option_id'] + '][]" value="' + option_value['product_option_value_id'] + '" /> ' + option_value['name']; if (option_value['price']) { html += ' (' + option_value['price_prefix'] + option_value['price'] + ')'; } html += ' </label>'; html += '</div>'; } html += ' </div>'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'image') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <select name="option[' + option['product_option_id'] + ']" id="input-option' + option['product_option_id'] + '" class="form-control">'; html += ' <option value=""><?php echo $text_select; ?></option>'; for (j = 0; j < option['product_option_value'].length; j++) { option_value = option['product_option_value'][j]; html += '<option value="' + option_value['product_option_value_id'] + '">' + option_value['name']; if (option_value['price']) { html += ' (' + option_value['price_prefix'] + option_value['price'] + ')'; } html += '</option>'; } html += ' </select>'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'text') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" id="input-option' + option['product_option_id'] + '" class="form-control" /></div>'; html += '</div>'; } if (option['type'] == 'textarea') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10"><textarea name="option[' + option['product_option_id'] + ']" rows="5" id="input-option' + option['product_option_id'] + '" class="form-control">' + option['value'] + '</textarea></div>'; html += '</div>'; } if (option['type'] == 'file') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <button type="button" id="button-upload' + option['product_option_id'] + '" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-default"><i class="fa fa-upload"></i> <?php echo $button_upload; ?></button>'; html += ' <input type="hidden" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" id="input-option' + option['product_option_id'] + '" />'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'date') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-3"><div class="input-group date"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" placeholder="' + option['name'] + '" data-date-format="YYYY-MM-DD" id="input-option' + option['product_option_id'] + '" class="form-control" /><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div></div>'; html += '</div>'; } if (option['type'] == 'datetime') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-3"><div class="input-group datetime"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" placeholder="' + option['name'] + '" data-date-format="YYYY-MM-DD HH:mm" id="input-option' + option['product_option_id'] + '" class="form-control" /><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div></div>'; html += '</div>'; } if (option['type'] == 'time') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-3"><div class="input-group time"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" placeholder="' + option['name'] + '" data-date-format="HH:mm" id="input-option' + option['product_option_id'] + '" class="form-control" /><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div></div>'; html += '</div>'; } } html += '</fieldset>'; $('#option').html(html); $('.date').datetimepicker({ pickTime: false }); $('.datetime').datetimepicker({ pickDate: true, pickTime: true }); $('.time').datetimepicker({ pickDate: false }); } else { $('#option').html(''); } } $('#tab-product input[name=\'product\']').autocomplete({ 'source': function(request, response) { $.ajax({ url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item['name'], value: item['product_id'], name: item['name'], model: item['model'], option: item['option'], price: item['price'] } })); } }); }, 'select': function(item) { product_selection(item); } }); $('#tab-product input[name=\'product_model\']').autocomplete({ 'source': function(request, response) { $.ajax({ url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_model=' + encodeURIComponent(request), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item['model'], value: item['product_id'], name: item['name'], model: item['model'], option: item['option'], price: item['price'] } })); } }); }, 'select': function(item) { product_selection(item); } }); в итоге в блоке "Выберите товар" будет 2 поля, первое - так и остается поиском по имени, второе - по артикулу RHCk 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Vladok Опубликовано: июня 25, 2019 Жалоба Поделиться Опубликовано: июня 25, 2019 В 06.12.2015 at 03:37, savage4pro сказал: решение касается только шаблона редактирования заказа, поэтому дополнение писать - пустое занятие, по этой же причине и в howto ему делать особо нечего, засорять только шаблон admin/view/template/sale/order_form.tpl находим <label class="col-sm-2 control-label" for="input-product"><?php echo $entry_product; ?></label> <div class="col-sm-10"> <input type="text" name="product" value="" id="input-product" class="form-control" /> <input type="hidden" name="product_id" value="" /> </div> и после него добавляем <label class="col-sm-2 control-label" for="input-product-model"></label> <div class="col-sm-10"> <input type="text" name="product_model" value="" id="input-product-model" class="form-control" /> </div> находим блок $('#tab-product input[name=\'product\']').autocomplete({ ... }); заменяем его целиком на содержимое спойлера Показать содержимое var product_selection = function(item) { $('#tab-product input[name=\'product\']').val(item['name']); $('#tab-product input[name=\'product_model\']').val(item['model']); $('#tab-product input[name=\'product_id\']').val(item['value']); if (item['option'] != '') { html = '<fieldset>'; html += ' <legend><?php echo $entry_option; ?></legend>'; for (i = 0; i < item['option'].length; i++) { option = item['option'][i]; if (option['type'] == 'select') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <select name="option[' + option['product_option_id'] + ']" id="input-option' + option['product_option_id'] + '" class="form-control">'; html += ' <option value=""><?php echo $text_select; ?></option>'; for (j = 0; j < option['product_option_value'].length; j++) { option_value = option['product_option_value'][j]; html += '<option value="' + option_value['product_option_value_id'] + '">' + option_value['name']; if (option_value['price']) { html += ' (' + option_value['price_prefix'] + option_value['price'] + ')'; } html += '</option>'; } html += ' </select>'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'radio') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <select name="option[' + option['product_option_id'] + ']" id="input-option' + option['product_option_id'] + '" class="form-control">'; html += ' <option value=""><?php echo $text_select; ?></option>'; for (j = 0; j < option['product_option_value'].length; j++) { option_value = option['product_option_value'][j]; html += '<option value="' + option_value['product_option_value_id'] + '">' + option_value['name']; if (option_value['price']) { html += ' (' + option_value['price_prefix'] + option_value['price'] + ')'; } html += '</option>'; } html += ' </select>'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'checkbox') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <div id="input-option' + option['product_option_id'] + '">'; for (j = 0; j < option['product_option_value'].length; j++) { option_value = option['product_option_value'][j]; html += '<div class="checkbox">'; html += ' <label><input type="checkbox" name="option[' + option['product_option_id'] + '][]" value="' + option_value['product_option_value_id'] + '" /> ' + option_value['name']; if (option_value['price']) { html += ' (' + option_value['price_prefix'] + option_value['price'] + ')'; } html += ' </label>'; html += '</div>'; } html += ' </div>'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'image') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <select name="option[' + option['product_option_id'] + ']" id="input-option' + option['product_option_id'] + '" class="form-control">'; html += ' <option value=""><?php echo $text_select; ?></option>'; for (j = 0; j < option['product_option_value'].length; j++) { option_value = option['product_option_value'][j]; html += '<option value="' + option_value['product_option_value_id'] + '">' + option_value['name']; if (option_value['price']) { html += ' (' + option_value['price_prefix'] + option_value['price'] + ')'; } html += '</option>'; } html += ' </select>'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'text') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" id="input-option' + option['product_option_id'] + '" class="form-control" /></div>'; html += '</div>'; } if (option['type'] == 'textarea') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-10"><textarea name="option[' + option['product_option_id'] + ']" rows="5" id="input-option' + option['product_option_id'] + '" class="form-control">' + option['value'] + '</textarea></div>'; html += '</div>'; } if (option['type'] == 'file') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label">' + option['name'] + '</label>'; html += ' <div class="col-sm-10">'; html += ' <button type="button" id="button-upload' + option['product_option_id'] + '" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-default"><i class="fa fa-upload"></i> <?php echo $button_upload; ?></button>'; html += ' <input type="hidden" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" id="input-option' + option['product_option_id'] + '" />'; html += ' </div>'; html += '</div>'; } if (option['type'] == 'date') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-3"><div class="input-group date"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" placeholder="' + option['name'] + '" data-date-format="YYYY-MM-DD" id="input-option' + option['product_option_id'] + '" class="form-control" /><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div></div>'; html += '</div>'; } if (option['type'] == 'datetime') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-3"><div class="input-group datetime"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" placeholder="' + option['name'] + '" data-date-format="YYYY-MM-DD HH:mm" id="input-option' + option['product_option_id'] + '" class="form-control" /><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div></div>'; html += '</div>'; } if (option['type'] == 'time') { html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">'; html += ' <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>'; html += ' <div class="col-sm-3"><div class="input-group time"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" placeholder="' + option['name'] + '" data-date-format="HH:mm" id="input-option' + option['product_option_id'] + '" class="form-control" /><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div></div>'; html += '</div>'; } } html += '</fieldset>'; $('#option').html(html); $('.date').datetimepicker({ pickTime: false }); $('.datetime').datetimepicker({ pickDate: true, pickTime: true }); $('.time').datetimepicker({ pickDate: false }); } else { $('#option').html(''); } } $('#tab-product input[name=\'product\']').autocomplete({ 'source': function(request, response) { $.ajax({ url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item['name'], value: item['product_id'], name: item['name'], model: item['model'], option: item['option'], price: item['price'] } })); } }); }, 'select': function(item) { product_selection(item); } }); $('#tab-product input[name=\'product_model\']').autocomplete({ 'source': function(request, response) { $.ajax({ url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_model=' + encodeURIComponent(request), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item['model'], value: item['product_id'], name: item['name'], model: item['model'], option: item['option'], price: item['price'] } })); } }); }, 'select': function(item) { product_selection(item); } }); в итоге в блоке "Выберите товар" будет 2 поля, первое - так и остается поиском по имени, второе - по артикулу После данных изменений вылазит ошибка при добавлении товара "Product can not be bought from the store you have choosen!" Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.