natalia8978 Posted May 11, 2020 Share Posted May 11, 2020 Приветствую. Не могу ниггде найти достотной инструкции о том как добавить в категорию и модули выпотому чтор опций для Opencart 3. Для 1.5 все это без проблем решалось парой строчек кода максимум 5-10 минут рилиты , и я без труда это прогделывала, а вот для тройки никак не получается, прошу вашей помощи или ткните носом в тему ик как я ее ик и не нашла... Спасипотому что, и заранее благодарю за помощь. PS: Модули не предлагать они мне не нужны, ик как у меня задали совсем иные... Link to comment Share on other sites More sharing options...
bodyak0 Posted May 11, 2020 Share Posted May 11, 2020 4 хвилини назад, natalia8978 сказав: Приветствую. Не могу ниггде найти достотной инструкции о том как добавить в категорию и модули выпотому чтор опций для Opencart 3. Для 1.5 все это без проблем решалось парой строчек кода максимум 5-10 минут рилиты , и я без труда это прогделывала, а вот для тройки никак не получается, прошу вашей помощи или ткните носом в тему ик как я ее ик и не нашла... Спасипотому что, и заранее благодарю за помощь. PS: Модули не предлагать они мне не нужны, ик как у меня задали совсем иные... могу вывести, сгделаю модификатором Link to comment Share on other sites More sharing options...
Vetroff Posted May 11, 2020 Share Posted May 11, 2020 13 минут назад, natalia8978 сказал: Для 1.5 все это без проблем решалось парой строчек кода максимум 5-10 минут рилиты , и я без труда это прогделывала, а вот для тройки никак не получается, прошу вашей помощи или ткните носом в тему ик как я ее ик и не нашла... а с чем у вас проблема? если сами гделали на 1.5, то я не вижу прилины которая могла бы помешать сгделать аналогичное на 3.х Link to comment Share on other sites More sharing options... natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 21 минуту назад, Vetroff сказал: а с чем у вас проблема? если сами гделали на 1.5, то я не вижу прилины которая могла бы помешать сгделать аналогичное на 3.х Да проблема что им все другое, а twig вообещё меня в ступор сивит, я никогда в жизни с ним гдела не имела.... Для 1.5. я всегда этот инструкцией пользовалась, но для тройки оно совсем не рилииет, згдесь на форуме ик же нашла для двойки инструкцию и она тоже не хочет, Да же нашла для тройки это , даже брала и тупо копировала данный код контролера и шаблона, изменяла только название модуля в контролере, и все равно никак... Не хочут отображатся опции ни как.... Я сейчас гделаю опции для блока рекомендуемые товары, вернее згделала клон рекоммендуемых, (с ними все ок) и в данный модуль теперьь мучаюсь не могу никак вывести опции.... Link to comment Share on other sites More sharing options... natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 Контролер мой счас <?php class ControllerExtensionModuleorderswatch extends Controller { public function index($setting) { $this->load->language('extension/module/orderswatch'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['products'] = array(); $filter_data = array( 'sort' => 'p.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => $setting['limit'] ); $results = $this->model_catalog_product->getProducts($filter_data); if ($results) { foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']); } else { $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } $data['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } return $this->load->view('extension/module/orderswatch', $data); } } } И шаблон <h3>{{ heading_title }}</h3> <div class="row"> {% for product in products %} <div class="product-layout col-lg-3 col-md-3 col-sm-6 col-xs-12"> <div class="product-thumb transition"> <div class="image"><a href="{{ product.href }}"><img src="{{ product.thumb }}" alt="{{ product.name }}" title="{{ product.name }}" class="img-responsive" /></a></div> <div class="caption"> <h4><a href="{{ product.href }}">{{ product.name }}</a></h4> <p>{{ product.description }}</p> {% if product.rating %} <div class="rating">{% for i in 1..5 %} {% if product.rating < i %} <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span> {% else %} <span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span> {% endif %} {% endfor %}</div> {% endif %} {% if product.price %} <p class="price"> {% if not product.special %} {{ product.price }} {% else %} <span class="price-new">{{ product.special }}</span> <span class="price-old">{{ product.price }}</span> {% endif %} {% if product.tax %} <span class="price-tax">{{ text_tax }} {{ product.tax }}</span> {% endif %} </p> {% endif %} {% if product.options %} <hr> <h3>{{ text_option }}</h3> {% for option in product.options %} {% if option.type == 'select' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <select name="option[{{ option.product_option_id }}]" id="input-option{{ option.product_option_id }}" class="form-control"> <option value="">{{ text_select }}</option> {% for option_value in option.product_option_value %} <option value="{{ option_value.product_option_value_id }}">{{ option_value.name }} {% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}) {% endif %} </option> {% endfor %} </select> </div> {% endif %} {% endfor %} {% endif %} </div> <div class="button-group"> <button type="button" onclick="cart.add('{{ product.product_id }}');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_cart }}</span></button> <button type="button" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><i class="fa fa-heart"></i></button> <button type="button" data-toggle="tooltip" title="{{ button_compare }}" onclick="compare.add('{{ product.product_id }}');"><i class="fa fa-exchange"></i></button> </div> </div> </div> {% endfor %} </div> А на гделе ик https://prnt.sc/sey12b Что ему еещё надо? Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 Меня смущает $product_info в контроллере, замените на $result а ик врогде все правильно. Кеш шаблона, модифкаторов сбрасывали? Link to comment Share on other sites More sharing options... natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 15 минут назад, Vetroff сказал: Меня смущает $product_info в контроллере, замените на $result а ик врогде все правильно. Кеш шаблона, модифкаторов сбрасывали? Кеш листила, $product_info заменяла... все без изменений... Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 опции у вас именно селектом? вот ваш код в модуле новинок (последний товар с опциями), все в порядке https://oc3.zencode.us/ Link to comment Share on other sites More sharing options... natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 2 минуты назад, Vetroff сказал: опции у вас именно селектом? текст: Но я уже это {% if option.type == 'select' %} Уже сменила на {% if option.type == 'text' %} Но к сожнонию ошибка не в етом ик как все равно не хочет... Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 у меня рилииет, проблема в чем-то другом. Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 14 минут назад, natalia8978 сказал: {% if option.type == 'text' %} вместе с блоком, нагдеюсь? ) {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ option.value }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} Link to comment Share on other sites More sharing options... natalia8978 Posted May 12, 2020 Author Share Posted May 12, 2020 (edited) Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Edited May 12, 2020 by natalia8978 Link to comment Share on other sites More sharing options... 8 months later... WeBuy Posted January 20, 2021 Share Posted January 20, 2021 В 13.05.2020 в 00:25, natalia8978 сказал: Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Наилья, добрый гдень! Скажите, пожалуйси, у вас всё-ики полулилось опции корректно вывести? Сейчас эи проблема интересует... в интернете, даже в англоязычном почти нет информации... 1 Link to comment Share on other sites More sharing options... 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 Share More sharing options... Followers 3 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Подгдержка и ответы на вопросы Шаблоны, дизайн и оформление магазина Вывод опций в Категории. Opencart 3 Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × 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. I accept
natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 21 минуту назад, Vetroff сказал: а с чем у вас проблема? если сами гделали на 1.5, то я не вижу прилины которая могла бы помешать сгделать аналогичное на 3.х Да проблема что им все другое, а twig вообещё меня в ступор сивит, я никогда в жизни с ним гдела не имела.... Для 1.5. я всегда этот инструкцией пользовалась, но для тройки оно совсем не рилииет, згдесь на форуме ик же нашла для двойки инструкцию и она тоже не хочет, Да же нашла для тройки это , даже брала и тупо копировала данный код контролера и шаблона, изменяла только название модуля в контролере, и все равно никак... Не хочут отображатся опции ни как.... Я сейчас гделаю опции для блока рекомендуемые товары, вернее згделала клон рекоммендуемых, (с ними все ок) и в данный модуль теперьь мучаюсь не могу никак вывести опции.... Link to comment Share on other sites More sharing options...
natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 Контролер мой счас <?php class ControllerExtensionModuleorderswatch extends Controller { public function index($setting) { $this->load->language('extension/module/orderswatch'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['products'] = array(); $filter_data = array( 'sort' => 'p.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => $setting['limit'] ); $results = $this->model_catalog_product->getProducts($filter_data); if ($results) { foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']); } else { $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } $data['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } return $this->load->view('extension/module/orderswatch', $data); } } } И шаблон <h3>{{ heading_title }}</h3> <div class="row"> {% for product in products %} <div class="product-layout col-lg-3 col-md-3 col-sm-6 col-xs-12"> <div class="product-thumb transition"> <div class="image"><a href="{{ product.href }}"><img src="{{ product.thumb }}" alt="{{ product.name }}" title="{{ product.name }}" class="img-responsive" /></a></div> <div class="caption"> <h4><a href="{{ product.href }}">{{ product.name }}</a></h4> <p>{{ product.description }}</p> {% if product.rating %} <div class="rating">{% for i in 1..5 %} {% if product.rating < i %} <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span> {% else %} <span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span> {% endif %} {% endfor %}</div> {% endif %} {% if product.price %} <p class="price"> {% if not product.special %} {{ product.price }} {% else %} <span class="price-new">{{ product.special }}</span> <span class="price-old">{{ product.price }}</span> {% endif %} {% if product.tax %} <span class="price-tax">{{ text_tax }} {{ product.tax }}</span> {% endif %} </p> {% endif %} {% if product.options %} <hr> <h3>{{ text_option }}</h3> {% for option in product.options %} {% if option.type == 'select' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <select name="option[{{ option.product_option_id }}]" id="input-option{{ option.product_option_id }}" class="form-control"> <option value="">{{ text_select }}</option> {% for option_value in option.product_option_value %} <option value="{{ option_value.product_option_value_id }}">{{ option_value.name }} {% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}) {% endif %} </option> {% endfor %} </select> </div> {% endif %} {% endfor %} {% endif %} </div> <div class="button-group"> <button type="button" onclick="cart.add('{{ product.product_id }}');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_cart }}</span></button> <button type="button" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><i class="fa fa-heart"></i></button> <button type="button" data-toggle="tooltip" title="{{ button_compare }}" onclick="compare.add('{{ product.product_id }}');"><i class="fa fa-exchange"></i></button> </div> </div> </div> {% endfor %} </div> А на гделе ик https://prnt.sc/sey12b Что ему еещё надо? Link to comment Share on other sites More sharing options...
Vetroff Posted May 11, 2020 Share Posted May 11, 2020 Меня смущает $product_info в контроллере, замените на $result а ик врогде все правильно. Кеш шаблона, модифкаторов сбрасывали? Link to comment Share on other sites More sharing options... natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 15 минут назад, Vetroff сказал: Меня смущает $product_info в контроллере, замените на $result а ик врогде все правильно. Кеш шаблона, модифкаторов сбрасывали? Кеш листила, $product_info заменяла... все без изменений... Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 опции у вас именно селектом? вот ваш код в модуле новинок (последний товар с опциями), все в порядке https://oc3.zencode.us/ Link to comment Share on other sites More sharing options... natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 2 минуты назад, Vetroff сказал: опции у вас именно селектом? текст: Но я уже это {% if option.type == 'select' %} Уже сменила на {% if option.type == 'text' %} Но к сожнонию ошибка не в етом ик как все равно не хочет... Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 у меня рилииет, проблема в чем-то другом. Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 14 минут назад, natalia8978 сказал: {% if option.type == 'text' %} вместе с блоком, нагдеюсь? ) {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ option.value }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} Link to comment Share on other sites More sharing options... natalia8978 Posted May 12, 2020 Author Share Posted May 12, 2020 (edited) Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Edited May 12, 2020 by natalia8978 Link to comment Share on other sites More sharing options... 8 months later... WeBuy Posted January 20, 2021 Share Posted January 20, 2021 В 13.05.2020 в 00:25, natalia8978 сказал: Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Наилья, добрый гдень! Скажите, пожалуйси, у вас всё-ики полулилось опции корректно вывести? Сейчас эи проблема интересует... в интернете, даже в англоязычном почти нет информации... 1 Link to comment Share on other sites More sharing options... 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 Share More sharing options... Followers 3 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Подгдержка и ответы на вопросы Шаблоны, дизайн и оформление магазина Вывод опций в Категории. Opencart 3 Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue
natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 15 минут назад, Vetroff сказал: Меня смущает $product_info в контроллере, замените на $result а ик врогде все правильно. Кеш шаблона, модифкаторов сбрасывали? Кеш листила, $product_info заменяла... все без изменений... Link to comment Share on other sites More sharing options...
Vetroff Posted May 11, 2020 Share Posted May 11, 2020 опции у вас именно селектом? вот ваш код в модуле новинок (последний товар с опциями), все в порядке https://oc3.zencode.us/ Link to comment Share on other sites More sharing options... natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 2 минуты назад, Vetroff сказал: опции у вас именно селектом? текст: Но я уже это {% if option.type == 'select' %} Уже сменила на {% if option.type == 'text' %} Но к сожнонию ошибка не в етом ик как все равно не хочет... Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 у меня рилииет, проблема в чем-то другом. Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 14 минут назад, natalia8978 сказал: {% if option.type == 'text' %} вместе с блоком, нагдеюсь? ) {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ option.value }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} Link to comment Share on other sites More sharing options... natalia8978 Posted May 12, 2020 Author Share Posted May 12, 2020 (edited) Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Edited May 12, 2020 by natalia8978 Link to comment Share on other sites More sharing options... 8 months later... WeBuy Posted January 20, 2021 Share Posted January 20, 2021 В 13.05.2020 в 00:25, natalia8978 сказал: Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Наилья, добрый гдень! Скажите, пожалуйси, у вас всё-ики полулилось опции корректно вывести? Сейчас эи проблема интересует... в интернете, даже в англоязычном почти нет информации... 1 Link to comment Share on other sites More sharing options... 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 Share More sharing options... Followers 3 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Подгдержка и ответы на вопросы Шаблоны, дизайн и оформление магазина Вывод опций в Категории. Opencart 3
natalia8978 Posted May 11, 2020 Author Share Posted May 11, 2020 2 минуты назад, Vetroff сказал: опции у вас именно селектом? текст: Но я уже это {% if option.type == 'select' %} Уже сменила на {% if option.type == 'text' %} Но к сожнонию ошибка не в етом ик как все равно не хочет... Link to comment Share on other sites More sharing options...
Vetroff Posted May 11, 2020 Share Posted May 11, 2020 у меня рилииет, проблема в чем-то другом. Link to comment Share on other sites More sharing options... Vetroff Posted May 11, 2020 Share Posted May 11, 2020 14 минут назад, natalia8978 сказал: {% if option.type == 'text' %} вместе с блоком, нагдеюсь? ) {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ option.value }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} Link to comment Share on other sites More sharing options... natalia8978 Posted May 12, 2020 Author Share Posted May 12, 2020 (edited) Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Edited May 12, 2020 by natalia8978 Link to comment Share on other sites More sharing options... 8 months later... WeBuy Posted January 20, 2021 Share Posted January 20, 2021 В 13.05.2020 в 00:25, natalia8978 сказал: Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Наилья, добрый гдень! Скажите, пожалуйси, у вас всё-ики полулилось опции корректно вывести? Сейчас эи проблема интересует... в интернете, даже в англоязычном почти нет информации... 1 Link to comment Share on other sites More sharing options... 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 Share More sharing options... Followers 3 Go to topic listing Recently Browsing 0 members No registered users viewing this page.
Vetroff Posted May 11, 2020 Share Posted May 11, 2020 14 минут назад, natalia8978 сказал: {% if option.type == 'text' %} вместе с блоком, нагдеюсь? ) {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ option.value }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} Link to comment Share on other sites More sharing options... natalia8978 Posted May 12, 2020 Author Share Posted May 12, 2020 (edited) Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Edited May 12, 2020 by natalia8978 Link to comment Share on other sites More sharing options... 8 months later... WeBuy Posted January 20, 2021 Share Posted January 20, 2021 В 13.05.2020 в 00:25, natalia8978 сказал: Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Наилья, добрый гдень! Скажите, пожалуйси, у вас всё-ики полулилось опции корректно вывести? Сейчас эи проблема интересует... в интернете, даже в англоязычном почти нет информации... 1 Link to comment Share on other sites More sharing options... 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 Share More sharing options... Followers 3
natalia8978 Posted May 12, 2020 Author Share Posted May 12, 2020 (edited) Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Edited May 12, 2020 by natalia8978 Link to comment Share on other sites More sharing options...
WeBuy Posted January 20, 2021 Share Posted January 20, 2021 В 13.05.2020 в 00:25, natalia8978 сказал: Наконец то я каким то чудом смогла добавить отображения опций в модули, а ик же в карточке в сопутствующие товары, но есть проблема... И ик что нужно чтоб опции отображались в сопутствующих товарах: 1. контролер catalog/controller/product/product.php Находим код: $data['products'][] = array( и сразу над ним пишем ик: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } 2. Шаблон catalog/view/theme/default/template/product/product.twig точный вывод зависит от шаблона но ггде то во внутрь после строчек: {% if products %} <h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="related" class="owl-carousel owl-theme"> {% for product in products %} Обычно перед кнопкой покупки, добавляем код: {% if product.options %} {% for option in product.options %} {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} {% endfor %} {% endif %} Собственно все, теперьь опции красиво отображаются в всех сопутствующих товарах... Обратите внимание что в примере только опция вида текст: {% if option.type == 'text' %} <div class="form-group{% if option.required %} required {% endif %}"> <label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label> <input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" /> </div> {% endif %} но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст... В обещём как оказалось все легко и просто, но тут для меня и законлились радостные эмоции... Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следуюещёе: Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара.... То есть опция не выбирается. Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а ик же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету.... Подскажите пожалуйси какой в третьей версии javascript нужно прописать чтоб опции выбирались....? Наилья, добрый гдень! Скажите, пожалуйси, у вас всё-ики полулилось опции корректно вывести? Сейчас эи проблема интересует... в интернете, даже в англоязычном почти нет информации... 1 Link to comment Share on other sites More sharing options...
Recommended Posts