доброго дня. задача: в админке в выпадающем списке товаров кроме названия дополнительно нужно вывести цену price из бд из таблицы oc_product. вот кусочек кода в js-файле, где лежит редактируемый код: это файл admin/view/javascript/common.js for (i = 0; i < json.length; i++) { if (!json['category']) { html += '<li data-value="' + json['value'] + '"><a href="#">' + json['label'] + '</a></li>'; } } Где выделил жирным - там нужно вставить цену. Здесь выводится json['value'] - id товара и json['label'] название товара. Вот нужно что-то типа json['price'] для цены. Как это сделать? Где прописать, где указать? Прилагаю Скриншот для понимания.
Видимо заменить в скрипте Related label: item['name'] на что то типа label: item['name'] + ' (' + item['price'] + ')'
Спасибо. Пока не сработало. выводит undefined. (скрин 1). в common.js дописал json['price'] (скрин 2) а по вашей подсказке в разделе Related дописал label: item['name'] + ' (' + item['price'] + ')' в двух файлах, т.к. не уверен, какой именно задействован: admin/view/template/catalog/article_form.tpl и admin/view/template/catalog/prоduct_form.tpl (Скрин 3)
Не нужно ничего трогать в common.js Так на вскидку, заменить вывод цены в контроллере admin/controller/catalog/product.php Здесь Код: $json[] = array( 'product_id' => $result['product_id'], 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')), 'model' => $result['model'], 'option' => $option_data, 'price' => $result['price'] ); 'price' => $result['price'] на 'price' => $this->currency->format($result['price'], $this->config->get('config_currency')) что бы получить отформатированную цену. Ну и в шаблоне карточки товара admin/view/template/catalog/product_form.twig В скрипте Код: // Related $('input[name=\'related\']').autocomplete({ 'source': function(request, response) { $.ajax({ url: 'index.php?route=catalog/product/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item['name'], value: item['product_id'] } })); } }); }, 'select': function(item) { $('input[name=\'related\']').val(''); $('#product-related' + item['value']).remove(); $('#product-related').append('<div id="product-related' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="product_related[]" value="' + item['value'] + '" /></div>'); } }); Вместо [label: item['name'], Это label: item['name'] + ' (' + item['price'] + ')', Не проверял.
большое спасибо! всё работает. подскажите последнее: есть товары с нулевой ценой (сняты с производства). как сделать, чтобы они не выводились в выпадающем списке? на скриншоте.
Ну как вариант, в том же контроллере , где подменяли цену до Код: $json[] = array( Добавить проверку Код: if ($result['price'] <= 0) { continue; } Ocmod Код: <?xml version="1.0" encoding="UTF-8"?> <modification> <name>Add Price to Related Products Autocomplete</name> <version>1.0.0</version> <author>Tom</author> <code>Add Price to Related Products Autocomplete</code> <link>Add Price to Related Products Autocomplete</link> <file path="admin/controller/catalog/product.php"> <operation error="skip"> <search><![CDATA['product_id' => $related_info['product_id'],]]></search> <add position="after"><![CDATA['price' => $this->currency->format($related_info['price'], $this->config->get('config_currency')),]]></add> </operation> <operation error="skip"> <search><![CDATA['price' => $result['price']]]></search> <add position="replace"><![CDATA['price' => $this->currency->format($result['price'], $this->config->get('config_currency'))]]></add> </operation> <operation error="skip"> <search><![CDATA[$json[] = array(]]></search> <add position="before"><![CDATA[ if ($result['price'] <= 0) { continue; } ]]></add> </operation> </file> <file path="admin/view/template/catalog/product_form.twig"> <operation error="skip"> <search><![CDATA[<div id="product-related{{ product_related.product_id }}"><i class="fa fa-minus-circle"></i> {{ product_related.name }}]]></search> <add position="replace"><![CDATA[ <div id="product-related{{ product_related.product_id }}"><i class="fa fa-minus-circle"></i> {{ product_related.name }} <span style="color: #0088cc; font-size: 12px; margin-left: 10px;">{{ product_related.price }}</span> ]]></add> </operation> <operation error="skip"> <search><![CDATA[label: item['name'],]]></search> <add position="replace"><![CDATA[label: item['name'] + ' (' + item['price'] + ')',]]></add> </operation> </file> </modification>