natalia8978 Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 (змінено) Доброго времени суток. Сегодня задалась вопросом как сделать дополнительный блок Related Products и у меня почти все получилось, наполовину... Но есть где то косяк который не могу решить самостоятельно, по этому пишу здесь подробнейшую инструкцию как cделать клон сопутствующих товаров в Opencart 3, а с вашей помощью надеюсь довести его до ума. И так первым делом админка, здесь вопросов нет, все идеально. Что делалось и как делалось: 1.admin/controller/catalog/product.php Находим: if (isset($this->request->post['product_related'])) { Перед ним добавляем: if (isset($this->request->post['product_swatch'])) { $products = $this->request->post['product_swatch']; } elseif (isset($this->request->get['product_id'])) { $products = $this->model_catalog_product->getProductSwatch($this->request->get['product_id']); } else { $products = array(); } $data['product_swatchs'] = array(); foreach ($products as $product_id) { $swatch_info = $this->model_catalog_product->getProduct($product_id); if ($swatch_info) { $data['product_swatchs'][] = array( 'product_id' => $swatch_info['product_id'], 'name' => $swatch_info['name'] ); } } 2.admin/model/catalog/product.php Находим код: if (isset($data['product_related'])) { Примерно 105 строка https://prnt.sc/sfdexa и над ним добавляем код: if (isset($data['product_swatch'])) { foreach ($data['product_swatch'] as $swatch_id) { $this->db->query("DELETE FROM " . DB_PREFIX . "product_swatch WHERE product_id = '" . (int)$product_id . "' AND swatch_id = '" . (int)$swatch_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_swatch SET product_id = '" . (int)$product_id . "', swatch_id = '" . (int)$swatch_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_swatch WHERE product_id = '" . (int)$swatch_id . "' AND swatch_id = '" . (int)$product_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_swatch SET product_id = '" . (int)$swatch_id . "', swatch_id = '" . (int)$product_id . "'"); } } После находим туже строку if (isset($data['product_related'])) { но уже примерно на 297 строке и над ними пропускаем две строчки которые выше и добавляем: $this->db->query("DELETE FROM " . DB_PREFIX . "product_swatch WHERE product_id = '" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_swatch WHERE swatch_id = '" . (int)$product_id . "'"); if (isset($data['product_swatch'])) { foreach ($data['product_swatch'] as $swatch_id) { $this->db->query("DELETE FROM " . DB_PREFIX . "product_swatch WHERE product_id = '" . (int)$product_id . "' AND swatch_id = '" . (int)$swatch_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_swatch SET product_id = '" . (int)$product_id . "', swatch_id = '" . (int)$swatch_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_swatch WHERE product_id = '" . (int)$swatch_id . "' AND swatch_id = '" . (int)$product_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_swatch SET product_id = '" . (int)$swatch_id . "', swatch_id = '" . (int)$product_id . "'"); } } Чтоб получилось примерно так:https://prnt.sc/sfdiab Далее находим: $data['product_related'] = $this->getProductRelated($product_id); и перед ним добавляем: $data['product_swatch'] = $this->getProductSwatch($product_id); Далее ищем код, я так понимаю он за удаление товара отвечает: $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'"); И выше него пишем такой код: $this->db->query("DELETE FROM " . DB_PREFIX . "product_swatch WHERE product_id = '" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_swatch WHERE swatch_id = '" . (int)$product_id . "'"); Потом находим код: public function getProductRelated($product_id) { И над ним пишем такое: public function getProductSwatch($product_id) { $product_swatch_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_swatch WHERE product_id = '" . (int)$product_id . "'"); foreach ($query->rows as $result) { $product_swatch_data[] = $result['swatch_id']; } return $product_swatch_data; } Теперь откриваем шаблон: 3.admin/view/template/catalog/product_form.twig Ищем строку <label class="col-sm-2 control-label" for="input-related"> И над ней выше <div class="form-group"> Добавляем: <div class="form-group"> <label class="col-sm-2 control-label" for="input-swatch"><span data-toggle="tooltip" title="{{ help_swatch }}">{{ entry_swatch }}</span></label> <div class="col-sm-10"> <input type="text" name="swatch" value="" placeholder="{{ entry_swatch }}" id="input-swatch" class="form-control" /> <div id="product-swatch" class="well well-sm" style="height: 150px; overflow: auto;"> {% for product_swatch in product_swatchs %} <div id="product-swatch{{ product_swatch.product_id }}"><i class="fa fa-minus-circle"></i> {{ product_swatch.name }} <input type="hidden" name="product_swatch[]" value="{{ product_swatch.product_id }}" /> </div> {% endfor %}</div> </div> </div> Далее в самом низу ищем $('input[name=\'related\']').autocomplete({ и над ним вставим следующее: // Swatch $('input[name=\'swatch\']').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=\'swatch\']').val(''); $('#product-swatch' + item['value']).remove(); $('#product-swatch').append('<div id="product-swatch' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="product_swatch[]" value="' + item['value'] + '" /></div>'); } }); $('#product-swatch').delegate('.fa-minus-circle', 'click', function() { $(this).parent().remove(); }); 4.Теперь нам нужно открыть admin/language/ru-ru/catalog/product.php И добавить куда то к примеру в конец списка после всех строчек: $_['entry_swatch'] = 'Swatch Products'; $_['help_swatch'] = '(Autocomplete)'; 5.Ну и последний пункт для вывода в админке: Заходим в базу данных phpMyAdmin там жмем экспорт, в списке находим oc_product_related все галочки снимаем а только возле него оставляем и жмем вперед. Сохраняем на компьютере откриваем в нотепад + и делаем замену всех related на swatch и грузим обратно в базу данных кнопкой импорт. Ну вот собственно и все, теперь в админке можно добавлять свои товары, что с этого кода лишнее я не знаю, но у меня все работает как часы и ошибок не выдает, это я про админку. Ах да, и еще нужно очистить таблицу oc_product_swatch после импорта, там есть такая заветная кнопочка. Все, теперь то что у меня не совсем получилось, это вывести все это в карточку, надеюсь знающие люди подскажут где я сделала ошибку... ----------------------------------------------------------------------- 1. Модель catalog/model/catalog/product.php Здесь мы ищем: public function getProductRelated($product_id) { и над ним добавляем: public function getProductSwatch($product_id) { $product_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_swatch pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.swatch_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"); foreach ($query->rows as $result) { $product_data[$result['swatch_id']] = $this->getProduct($result['swatch_id']); } return $product_data; } 2. Открываем контролер catalog/controller/product/product.php: Находим код: $data['products'] = array(); И над ним добавляем: $data['swatch_products'] = array(); $results = $this->model_catalog_product->getProductSwatch($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_related_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_related_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_related_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_related_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 ((float)$product_info['special']) { $data['action_percent'] = 100-round($product_info['special']/$product_info['price']*100, 0); } else { $data['action_percent']= 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 = (int)$result['rating']; } else { $rating = false; } $data['swatch_products'][] = array( 'product_id' => $result['product_id'], '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, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } 3. Открываем шаблон и в нем находим код {% if tags %} и над ним ставим : <div class=""> {% if swatch_products %} <h2 class="home-heading text-center">{{ text_swatch }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="swatch" class=""> {% for product in swatch_products %} {% if column_left and column_right %} {% set class = 'col-xs-8 col-sm-6' %} {% elseif column_left or column_right %} {% set class = '' %} {% else %} {% set class = 'col-xs-12 col-sm-12' %} {% endif %} <div class="product-layout 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 center-block" /></a> <!-- insp Images Start --> {% set t = 0 %} {% for more_image in product.more_images %} {% for pop in more_image %} {% if t == 0 %} <a href="{{ product.href }}"><img src="{{ pop.popup_more }}" class="img-responsive second-img" alt="hover image"/></a> {% set t = t + 1 %} {% endif %} {% endfor %} {% endfor %} <!-- End --> {% if product.price %} {% if product.special %} <span class="salepro">sale</span> {% endif %} {% endif %} </div> <div class="caption text-center"> <h4><a href="{{ product.href }}">{{ product.name }}</a></h4> {# <p>{{ product.description }}</p> #} {% 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.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>{% else %} <div class="rating">{% for i in 1..5 %} <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span> {% endfor %}</div> {% endif %} <div class="button-group"> <button type="button" class="prowish" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><svg width="16px" height="16px"><use xlink:href="#addwish"></use></svg></button> <div class="bquickv" data-toggle="tooltip" title="{{ button_quickview }}"></div> <button class="acart" type="button" onclick="cart.add('{{ product.product_id }}');">{# <i class="fa fa-shopping-cart"></i> #}<span class="hidden-xs">{{ button_cart }}</span></button> <!--<button type="button" class="pcom" {# data-toggle="tooltip" title="{{ button_compare }} " #} onclick="compare.add('{{ product.product_id }}');">+ {{ button_compare }}</button>--> </div> </div> </div> </div> {% endfor %} </div> </div> {% endif %} </div> 4. в языковый файл catalog/language/ru-ru/product/product.php Добавляем заголовок $_['text_swatch'] = 'Swatch Products'; Все я закончила... А теперь вопрос знатокам, где я натупила? Почему на сайте выводится шо попало но только не то что в админке, походу выводит именно рекомендуемые старые но никак не из нового мода.... Плизззззз помогите найти причину ошибки, всем спасибо. PS: инструкцию писала лично сама по ходу своих действий по етому строго не судите если что не так... *************************************************************************************************************** Инструкция поправлена, и полностью рабочая, отдельная благодарность Seriusis и Vetroff *************************************************************************************************************** Тему можно закрывать. Змінено 12 травня 2020 користувачем natalia8978 2 Надіслати Поділитися на інших сайтах More sharing options...
Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 если не ошибаюсь, какраз оригинальные рекомендуемые добавляются в массив $data['products'] в контроллере товара Для начала вы создайте свой массив, например $data['swatch_products'] и уже при переборе $results добавляйте туда данные. А дальше смотреть, какие данные приходят, если все правильно сделано, то будет работать 1 Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 ну и понятно, что в twig файле тоже работать с swatch_products а не products Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 вы в контроллере выводите в один массив и рекомендуемые и вот это вот в шаблоне аналогично. Надіслати Поділитися на інших сайтах More sharing options... natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Да действительно вы правы, я изменила контролер теперь на такой: Перед: $data['products'] = array(); Добавила теперь так: $data['swatch_products'] = array(); $results = $this->model_catalog_product->getProductSwatch($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_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 ((float)$product_info['special']) { $data['action_percent'] = 100-round($product_info['special']/$product_info['price']*100, 0); } else { $data['action_percent']= 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 = (int)$result['rating']; } else { $rating = false; } $data['swatch_products'][] = array( 'product_id' => $result['product_id'], '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, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } А в шаблоне теперь так: <div class=""> {% if swatch_products %} <h2 class="home-heading text-center">{{ text_swatch }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="swatch" class=""> {% for product in swatch_products %} {% if column_left and column_right %} {% set class = 'col-xs-8 col-sm-6' %} {% elseif column_left or column_right %} {% set class = '' %} {% else %} {% set class = 'col-xs-12 col-sm-12' %} {% endif %} <div class="product-layout 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 center-block" /></a> <!-- insp Images Start --> {% set t = 0 %} {% for more_image in product.more_images %} {% for pop in more_image %} {% if t == 0 %} <a href="{{ product.href }}"><img src="{{ pop.popup_more }}" class="img-responsive second-img" alt="hover image"/></a> {% set t = t + 1 %} {% endif %} {% endfor %} {% endfor %} <!-- End --> {% if product.price %} {% if product.special %} <span class="salepro">sale</span> {% endif %} {% endif %} </div> <div class="caption text-center"> <h4><a href="{{ product.href }}">{{ product.name }}</a></h4> {# <p>{{ product.description }}</p> #} {% 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.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>{% else %} <div class="rating">{% for i in 1..5 %} <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span> {% endfor %}</div> {% endif %} <div class="button-group"> <button type="button" class="prowish" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><svg width="16px" height="16px"><use xlink:href="#addwish"></use></svg></button> <div class="bquickv" data-toggle="tooltip" title="{{ button_quickview }}"></div> <button class="acart" type="button" onclick="cart.add('{{ product.product_id }}');">{# <i class="fa fa-shopping-cart"></i> #}<span class="hidden-xs">{{ button_cart }}</span></button> <!--<button type="button" class="pcom" {# data-toggle="tooltip" title="{{ button_compare }} " #} onclick="compare.add('{{ product.product_id }}');">+ {{ button_compare }}</button>--> </div> </div> </div> </div> {% endfor %} </div> </div> {% endif %} </div> Теперь в модуле верно отображает нужную позицию https://prnt.sc/sffw6m именно та которая в админке указанна. Но ошибки все равно сыплятся https://prnt.sc/sffwub Ну и не показывает собственно картинку, остальное вроде отображает ровно все... Собственно где то что то еще не так.... Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 в блоке вашем if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } проверьте параметры, которые передаете в метод $this->model_tool_image->resize а именно $result['image'] возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке Надіслати Поділитися на інших сайтах More sharing options... natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Да, спасибо, я как раз до этого тоже додумалась так как увидела $this->config->get('config_theme') . '_image_ И сразу дошло что ведь там тема размеры указывает, изменила назад именно куски на _image_related_width и _image_related_height и теперь все ровненько, спасибо Вам всем за помощь. Счас инструкцию вверху подправлю для других... 2 Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 2 минуты назад, Seriusis сказал: возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке все гораздо проще ) Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: все гораздо проще ) понятно, с конфига тянет то, чего не положили ) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Загальні питання Клон Сопутствующие товары Opencart 3 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 ну и понятно, что в twig файле тоже работать с swatch_products а не products Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 вы в контроллере выводите в один массив и рекомендуемые и вот это вот в шаблоне аналогично. Надіслати Поділитися на інших сайтах More sharing options... natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Да действительно вы правы, я изменила контролер теперь на такой: Перед: $data['products'] = array(); Добавила теперь так: $data['swatch_products'] = array(); $results = $this->model_catalog_product->getProductSwatch($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_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 ((float)$product_info['special']) { $data['action_percent'] = 100-round($product_info['special']/$product_info['price']*100, 0); } else { $data['action_percent']= 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 = (int)$result['rating']; } else { $rating = false; } $data['swatch_products'][] = array( 'product_id' => $result['product_id'], '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, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } А в шаблоне теперь так: <div class=""> {% if swatch_products %} <h2 class="home-heading text-center">{{ text_swatch }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="swatch" class=""> {% for product in swatch_products %} {% if column_left and column_right %} {% set class = 'col-xs-8 col-sm-6' %} {% elseif column_left or column_right %} {% set class = '' %} {% else %} {% set class = 'col-xs-12 col-sm-12' %} {% endif %} <div class="product-layout 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 center-block" /></a> <!-- insp Images Start --> {% set t = 0 %} {% for more_image in product.more_images %} {% for pop in more_image %} {% if t == 0 %} <a href="{{ product.href }}"><img src="{{ pop.popup_more }}" class="img-responsive second-img" alt="hover image"/></a> {% set t = t + 1 %} {% endif %} {% endfor %} {% endfor %} <!-- End --> {% if product.price %} {% if product.special %} <span class="salepro">sale</span> {% endif %} {% endif %} </div> <div class="caption text-center"> <h4><a href="{{ product.href }}">{{ product.name }}</a></h4> {# <p>{{ product.description }}</p> #} {% 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.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>{% else %} <div class="rating">{% for i in 1..5 %} <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span> {% endfor %}</div> {% endif %} <div class="button-group"> <button type="button" class="prowish" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><svg width="16px" height="16px"><use xlink:href="#addwish"></use></svg></button> <div class="bquickv" data-toggle="tooltip" title="{{ button_quickview }}"></div> <button class="acart" type="button" onclick="cart.add('{{ product.product_id }}');">{# <i class="fa fa-shopping-cart"></i> #}<span class="hidden-xs">{{ button_cart }}</span></button> <!--<button type="button" class="pcom" {# data-toggle="tooltip" title="{{ button_compare }} " #} onclick="compare.add('{{ product.product_id }}');">+ {{ button_compare }}</button>--> </div> </div> </div> </div> {% endfor %} </div> </div> {% endif %} </div> Теперь в модуле верно отображает нужную позицию https://prnt.sc/sffw6m именно та которая в админке указанна. Но ошибки все равно сыплятся https://prnt.sc/sffwub Ну и не показывает собственно картинку, остальное вроде отображает ровно все... Собственно где то что то еще не так.... Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 в блоке вашем if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } проверьте параметры, которые передаете в метод $this->model_tool_image->resize а именно $result['image'] возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке Надіслати Поділитися на інших сайтах More sharing options... natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Да, спасибо, я как раз до этого тоже додумалась так как увидела $this->config->get('config_theme') . '_image_ И сразу дошло что ведь там тема размеры указывает, изменила назад именно куски на _image_related_width и _image_related_height и теперь все ровненько, спасибо Вам всем за помощь. Счас инструкцию вверху подправлю для других... 2 Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 2 минуты назад, Seriusis сказал: возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке все гораздо проще ) Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: все гораздо проще ) понятно, с конфига тянет то, чего не положили ) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Загальні питання Клон Сопутствующие товары Opencart 3 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 вы в контроллере выводите в один массив и рекомендуемые и вот это вот в шаблоне аналогично. Надіслати Поділитися на інших сайтах More sharing options... natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Да действительно вы правы, я изменила контролер теперь на такой: Перед: $data['products'] = array(); Добавила теперь так: $data['swatch_products'] = array(); $results = $this->model_catalog_product->getProductSwatch($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_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 ((float)$product_info['special']) { $data['action_percent'] = 100-round($product_info['special']/$product_info['price']*100, 0); } else { $data['action_percent']= 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 = (int)$result['rating']; } else { $rating = false; } $data['swatch_products'][] = array( 'product_id' => $result['product_id'], '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, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } А в шаблоне теперь так: <div class=""> {% if swatch_products %} <h2 class="home-heading text-center">{{ text_swatch }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="swatch" class=""> {% for product in swatch_products %} {% if column_left and column_right %} {% set class = 'col-xs-8 col-sm-6' %} {% elseif column_left or column_right %} {% set class = '' %} {% else %} {% set class = 'col-xs-12 col-sm-12' %} {% endif %} <div class="product-layout 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 center-block" /></a> <!-- insp Images Start --> {% set t = 0 %} {% for more_image in product.more_images %} {% for pop in more_image %} {% if t == 0 %} <a href="{{ product.href }}"><img src="{{ pop.popup_more }}" class="img-responsive second-img" alt="hover image"/></a> {% set t = t + 1 %} {% endif %} {% endfor %} {% endfor %} <!-- End --> {% if product.price %} {% if product.special %} <span class="salepro">sale</span> {% endif %} {% endif %} </div> <div class="caption text-center"> <h4><a href="{{ product.href }}">{{ product.name }}</a></h4> {# <p>{{ product.description }}</p> #} {% 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.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>{% else %} <div class="rating">{% for i in 1..5 %} <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span> {% endfor %}</div> {% endif %} <div class="button-group"> <button type="button" class="prowish" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><svg width="16px" height="16px"><use xlink:href="#addwish"></use></svg></button> <div class="bquickv" data-toggle="tooltip" title="{{ button_quickview }}"></div> <button class="acart" type="button" onclick="cart.add('{{ product.product_id }}');">{# <i class="fa fa-shopping-cart"></i> #}<span class="hidden-xs">{{ button_cart }}</span></button> <!--<button type="button" class="pcom" {# data-toggle="tooltip" title="{{ button_compare }} " #} onclick="compare.add('{{ product.product_id }}');">+ {{ button_compare }}</button>--> </div> </div> </div> </div> {% endfor %} </div> </div> {% endif %} </div> Теперь в модуле верно отображает нужную позицию https://prnt.sc/sffw6m именно та которая в админке указанна. Но ошибки все равно сыплятся https://prnt.sc/sffwub Ну и не показывает собственно картинку, остальное вроде отображает ровно все... Собственно где то что то еще не так.... Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 в блоке вашем if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } проверьте параметры, которые передаете в метод $this->model_tool_image->resize а именно $result['image'] возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке Надіслати Поділитися на інших сайтах More sharing options... natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Да, спасибо, я как раз до этого тоже додумалась так как увидела $this->config->get('config_theme') . '_image_ И сразу дошло что ведь там тема размеры указывает, изменила назад именно куски на _image_related_width и _image_related_height и теперь все ровненько, спасибо Вам всем за помощь. Счас инструкцию вверху подправлю для других... 2 Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 2 минуты назад, Seriusis сказал: возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке все гораздо проще ) Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: все гораздо проще ) понятно, с конфига тянет то, чего не положили ) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Загальні питання Клон Сопутствующие товары Opencart 3 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Да действительно вы правы, я изменила контролер теперь на такой: Перед: $data['products'] = array(); Добавила теперь так: $data['swatch_products'] = array(); $results = $this->model_catalog_product->getProductSwatch($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_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 ((float)$product_info['special']) { $data['action_percent'] = 100-round($product_info['special']/$product_info['price']*100, 0); } else { $data['action_percent']= 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 = (int)$result['rating']; } else { $rating = false; } $data['swatch_products'][] = array( 'product_id' => $result['product_id'], '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, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } А в шаблоне теперь так: <div class=""> {% if swatch_products %} <h2 class="home-heading text-center">{{ text_swatch }}<span class="head-bottom"></span></h2> <div class="pro-nepr row thummargin"> <div id="swatch" class=""> {% for product in swatch_products %} {% if column_left and column_right %} {% set class = 'col-xs-8 col-sm-6' %} {% elseif column_left or column_right %} {% set class = '' %} {% else %} {% set class = 'col-xs-12 col-sm-12' %} {% endif %} <div class="product-layout 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 center-block" /></a> <!-- insp Images Start --> {% set t = 0 %} {% for more_image in product.more_images %} {% for pop in more_image %} {% if t == 0 %} <a href="{{ product.href }}"><img src="{{ pop.popup_more }}" class="img-responsive second-img" alt="hover image"/></a> {% set t = t + 1 %} {% endif %} {% endfor %} {% endfor %} <!-- End --> {% if product.price %} {% if product.special %} <span class="salepro">sale</span> {% endif %} {% endif %} </div> <div class="caption text-center"> <h4><a href="{{ product.href }}">{{ product.name }}</a></h4> {# <p>{{ product.description }}</p> #} {% 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.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>{% else %} <div class="rating">{% for i in 1..5 %} <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span> {% endfor %}</div> {% endif %} <div class="button-group"> <button type="button" class="prowish" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><svg width="16px" height="16px"><use xlink:href="#addwish"></use></svg></button> <div class="bquickv" data-toggle="tooltip" title="{{ button_quickview }}"></div> <button class="acart" type="button" onclick="cart.add('{{ product.product_id }}');">{# <i class="fa fa-shopping-cart"></i> #}<span class="hidden-xs">{{ button_cart }}</span></button> <!--<button type="button" class="pcom" {# data-toggle="tooltip" title="{{ button_compare }} " #} onclick="compare.add('{{ product.product_id }}');">+ {{ button_compare }}</button>--> </div> </div> </div> </div> {% endfor %} </div> </div> {% endif %} </div> Теперь в модуле верно отображает нужную позицию https://prnt.sc/sffw6m именно та которая в админке указанна. Но ошибки все равно сыплятся https://prnt.sc/sffwub Ну и не показывает собственно картинку, остальное вроде отображает ровно все... Собственно где то что то еще не так.... Надіслати Поділитися на інших сайтах More sharing options...
Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 в блоке вашем if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } проверьте параметры, которые передаете в метод $this->model_tool_image->resize а именно $result['image'] возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке Надіслати Поділитися на інших сайтах More sharing options... natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Да, спасибо, я как раз до этого тоже додумалась так как увидела $this->config->get('config_theme') . '_image_ И сразу дошло что ведь там тема размеры указывает, изменила назад именно куски на _image_related_width и _image_related_height и теперь все ровненько, спасибо Вам всем за помощь. Счас инструкцию вверху подправлю для других... 2 Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 2 минуты назад, Seriusis сказал: возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке все гораздо проще ) Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: все гораздо проще ) понятно, с конфига тянет то, чего не положили ) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Загальні питання Клон Сопутствующие товары Opencart 3 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 в блоке вашем if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_swatch_height')); } проверьте параметры, которые передаете в метод $this->model_tool_image->resize а именно $result['image'] возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке Надіслати Поділитися на інших сайтах More sharing options... natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Да, спасибо, я как раз до этого тоже додумалась так как увидела $this->config->get('config_theme') . '_image_ И сразу дошло что ведь там тема размеры указывает, изменила назад именно куски на _image_related_width и _image_related_height и теперь все ровненько, спасибо Вам всем за помощь. Счас инструкцию вверху подправлю для других... 2 Надіслати Поділитися на інших сайтах More sharing options... Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 2 минуты назад, Seriusis сказал: возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке все гораздо проще ) Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: все гораздо проще ) понятно, с конфига тянет то, чего не положили ) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Загальні питання Клон Сопутствующие товары Opencart 3
natalia8978 Опубліковано: 12 травня 2020 Автор Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: _image_swatch_width, _image_swatch_height вам нужно либо добавить эти переменные в настройках шаблона, но проще вернуть как было в рекомендуемых, если пропорции те же Да, спасибо, я как раз до этого тоже додумалась так как увидела $this->config->get('config_theme') . '_image_ И сразу дошло что ведь там тема размеры указывает, изменила назад именно куски на _image_related_width и _image_related_height и теперь все ровненько, спасибо Вам всем за помощь. Счас инструкцию вверху подправлю для других... 2 Надіслати Поділитися на інших сайтах More sharing options...
Vetroff Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 2 минуты назад, Seriusis сказал: возьмите и продебажте , смотрите что будет выведено. Судя по ошибкам то некоректное поле, там строка должна быть, т.е путь к картинке все гораздо проще ) Надіслати Поділитися на інших сайтах More sharing options... Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: все гораздо проще ) понятно, с конфига тянет то, чего не положили ) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Seriusis Опубліковано: 12 травня 2020 Share Опубліковано: 12 травня 2020 Только что, Vetroff сказал: все гораздо проще ) понятно, с конфига тянет то, чего не положили ) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1
Recommended Posts