coder0x7b Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 на странице сайта вылазит ошибка - Notice: Undefined index: product_id in /var/www2/letsshop.com.ua/system/storage/modification/catalog/controller/product/special.php on line 313 открывал этот файл, пытался даже закомментировать строку на которую ссылается ошибка, очищал кэш, обновлял модификаторы, ни на что не реагирует. Прошу помочь Надіслати Поділитися на інших сайтах More sharing options...
DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 Вы бы хоть показали что находится в этом файле. Вряд ли кто-то из форумчан догадается. Надіслати Поділитися на інших сайтах More sharing options... Fedka Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 8 часов назад, coder0x7b сказал: обновлял модификаторы После этого потом 8 часов назад, coder0x7b сказал: /var/www2/letsshop.com.ua/system/storage/modification/catalog/controller/product/special.php Этот файл с ошибкой заново и создается Нужно смотреть модификаторы, какие дают такую ошибку. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 (змінено) @Fedka а как посмотреть это? Змінено 2 жовтня 2020 користувачем coder0x7b Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY Спойлер <?php class ControllerProductSpecial extends Controller { public function index() { $this->load->language('product/special'); $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get($this->config->get('config_theme') . '_product_limit'); } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } $this->document->setTitle($this->language->get('heading_title')); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('product/special', $url) ); $data['heading_title'] = $this->language->get('heading_title'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); $data['button_continue'] = $this->language->get('button_continue'); $this->load->model('catalog/review'); $data['tab_description'] = $this->language->get('tab_description'); $data['tab_attribute'] = $this->language->get('tab_attribute'); $data['tab_review'] = sprintf($this->language->get('tab_review')); $data['logged'] = $this->customer->isLogged(); $data['compare'] = $this->url->link('product/compare'); $data['products'] = array(); $filter_data = array( 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProductSpecials(); $results = $this->model_catalog_product->getProductSpecials($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_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 = (int)$result['rating']; } else { $rating = false; } $images = $this->model_catalog_product->getProductImages($result['product_id']); if (!empty($images[0]['image']) && $images[0]['image'] != $image) { $image2 = $this->model_tool_image->resize($images[0]['image'], $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height')); } else if (!empty($images[1]['image'])) { $image2 = $this->model_tool_image->resize($images[1]['image'], $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height')); } else { $image2 = $image; } // XD Stickers start $this->load->model('setting/setting'); $xdstickers = $this->config->get('xdstickers'); $current_language_id = $this->config->get('config_language_id'); $product_xdstickers = array(); $data['xdstickers_position'] = ($xdstickers['position'] == '0') ? ' position_upleft' : ' position_upright'; if ($xdstickers['status']) { if ($xdstickers['sale']['status'] == '1' && $special) { if ($xdstickers['sale']['discount_status'] == '1') { $sale_value = ceil(((float)$result['price'] - (float)$result['special']) / ((float)$result['price'] * 0.01)); $sale_text = $xdstickers['sale']['text'][$current_language_id] . ' -' . strval($sale_value) . '%'; } else { $sale_text = $xdstickers['sale']['text'][$current_language_id]; } $product_xdstickers[] = array( 'id' => 'xdsticker_sale', 'text' => $sale_text ); } if ($xdstickers['bestseller']['status'] == '1') { $bestsellers = $this->model_catalog_product->getBestSellerProducts((int)$xdstickers['bestseller']['property']); foreach ($bestsellers as $bestseller) { if ($bestseller['product_id'] == $result['product_id']) { $product_xdstickers[] = array( 'id' => 'xdsticker_bestseller', 'text' => $xdstickers['bestseller']['text'][$current_language_id] ); } } } if ($xdstickers['novelty']['status'] == '1') { if ((strtotime($result['date_added']) + intval($xdstickers['novelty']['property']) * 24 * 3600) > time()) { $product_xdstickers[] = array( 'id' => 'xdsticker_novelty', 'text' => $xdstickers['novelty']['text'][$current_language_id] ); } } if ($xdstickers['last']['status'] == '1') { if ($result['quantity'] <= intval($xdstickers['last']['property']) && $result['quantity'] > 0) { $product_xdstickers[] = array( 'id' => 'xdsticker_last', 'text' => $xdstickers['last']['text'][$current_language_id] ); } } if ($xdstickers['freeshipping']['status'] == '1') { if ((float)$result['special'] >= intval($xdstickers['freeshipping']['property'])) { $product_xdstickers[] = array( 'id' => 'xdsticker_freeshipping', 'text' => $xdstickers['freeshipping']['text'][$current_language_id] ); } else if ((float)$result['price'] >= intval($xdstickers['freeshipping']['property'])) { $product_xdstickers[] = array( 'id' => 'xdsticker_freeshipping', 'text' => $xdstickers['freeshipping']['text'][$current_language_id] ); } } // STOCK stickers if (isset($xdstickers['stock']) && !empty($xdstickers['stock'])) { foreach($xdstickers['stock'] as $key => $value) { if (isset($value['status']) && $value['status'] == '1' && $key == $result['stock_status_id'] && $result['quantity'] <= 0) { $product_xdstickers[] = array( 'id' => 'xdsticker_stock_' . $key, 'text' => $result['stock_status'] ); } } } // CUSTOM stickers $this->load->model('extension/module/xdstickers'); $custom_xdstickers_id = $this->model_extension_module_xdstickers->getCustomXDStickersProduct($result['product_id']); if (!empty($custom_xdstickers_id)) { foreach ($custom_xdstickers_id as $custom_xdsticker_id) { $custom_xdsticker = $this->model_extension_module_xdstickers->getCustomXDSticker($custom_xdsticker_id['xdsticker_id']); $custom_xdsticker_text = json_decode($custom_xdsticker['text'], true); // var_dump($custom_xdsticker); if ($custom_xdsticker['status'] == '1') { $custom_sticker_class = 'xdsticker_' . $custom_xdsticker_id['xdsticker_id']; $product_xdstickers[] = array( 'id' => $custom_sticker_class, 'text' => $custom_xdsticker_text[$current_language_id] ); } } } } // XD Stickers end $options = array(); $store_options_data = $this->config->get('store_options_data'); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); if (isset($store_options_data['allowed_options']) && (in_array($option['option_id'], $store_options_data['allowed_options']))) { 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']) { $option_price = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $option_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' => ($option_value['image']) ? $this->model_tool_image->resize($option_value['image'], 50, 50) : '', 'price' => $option_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( 'options' => $options, 'product_xdstickers' => $product_xdstickers, 'product_id' => $result['product_id'], 'thumb' => $image, 'thumb2' => $image2, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'model' => $result['model'], 'special' => $special, 'tax' => $tax, 'minimum' => ($result['minimum'] > 0) ? $result['minimum'] : 1, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'] . $url) ); } $data['options'] = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['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' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 50, 50) : '', 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $data['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['review_status'] = $this->config->get('config_review_status'); if ($this->config->get('config_review_guest') || $this->customer->isLogged()) { $data['review_guest'] = true; } else { $data['review_guest'] = false; } if ($this->customer->isLogged()) { $data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName(); } else { $data['customer_name'] = ''; } $url = ''; if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/special', 'sort=p.sort_order&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/special', 'sort=pd.name&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/special', 'sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'ps.price-ASC', 'href' => $this->url->link('product/special', 'sort=ps.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'ps.price-DESC', 'href' => $this->url->link('product/special', 'sort=ps.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/special', 'sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/special', 'sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/special', 'sort=p.model&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/special', 'sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value) { $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->url->link('product/special', $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->url = $this->url->link('product/special', $url . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit)); // http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html if ($page == 1) { $this->document->addLink($this->url->link('product/special', '', true), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/special', '', true), 'prev'); } else { $this->document->addLink($this->url->link('product/special', 'page='. ($page - 1), true), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/special', 'page='. ($page + 1), true), 'next'); } $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $data['continue'] = $this->url->link('common/home'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('product/special', $data)); } } Надіслати Поділитися на інших сайтах More sharing options... DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 У вас неправильно установлен модуль, который выводит опции в списке товаров (категории, производители, акции и т.д.). Нужно искать модификатор, который вносит изменения начиная со строки 313, и подгонять его под ваш контроллер. За вознаграждение могу помочь. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 (змінено) @DariyGRAY вознаградил бы, да к сожалению пока не могу. У меня стоит модуль дополнительных страниц (хиты продаж, популярные, новинки и товары со скидками), если удалю модуль, что добавляет эти страницы, ошибка пройдёт? Змінено 2 жовтня 2020 користувачем coder0x7b Надіслати Поділитися на інших сайтах More sharing options... DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 6 минут назад, coder0x7b сказал: @DariyGRAY вознаградил бы, да к сожалению пока не могу. У меня стоит модуль дополнительных страниц (хиты продаж, популярные, новинки и товары со скидками), если удалю модуль, что добавляет эти страницы, ошибка пройдёт? Нет. Вам нужен модуль, который выводит опции в списках товаров Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY просто так не поможете? Надіслати Поділитися на інших сайтах More sharing options... DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 24 минуты назад, coder0x7b сказал: @DariyGRAY просто так не поможете? Так а как мне знать что у вас там за модули и какие используются модификаторы? Среди всех модификаторов нужно найти тот, который вносит изменения в контроллеры страниц со списками товаров для их расширения опциями. Потом нужно исправить данный модификатор. Там может быть несколько конфликтов, от которых нужно избавиться. Если мы будем все это выяснять в переписке, уйдет очень много времени. В противном случае мне придется подключаться к вашему ftp и делать определенную работу за которую я привык получать оплату. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY единственный модификатор который установлен и связан с товарами, это модификатор который выводит опцию размера в товаре, но почему он конфликтует только на странице скидок/популярных/новинок (добавленные страницы через модуль) ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Ошибка Undefined index Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Fedka Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 8 часов назад, coder0x7b сказал: обновлял модификаторы После этого потом 8 часов назад, coder0x7b сказал: /var/www2/letsshop.com.ua/system/storage/modification/catalog/controller/product/special.php Этот файл с ошибкой заново и создается Нужно смотреть модификаторы, какие дают такую ошибку. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 (змінено) @Fedka а как посмотреть это? Змінено 2 жовтня 2020 користувачем coder0x7b Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY Спойлер <?php class ControllerProductSpecial extends Controller { public function index() { $this->load->language('product/special'); $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get($this->config->get('config_theme') . '_product_limit'); } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } $this->document->setTitle($this->language->get('heading_title')); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('product/special', $url) ); $data['heading_title'] = $this->language->get('heading_title'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); $data['button_continue'] = $this->language->get('button_continue'); $this->load->model('catalog/review'); $data['tab_description'] = $this->language->get('tab_description'); $data['tab_attribute'] = $this->language->get('tab_attribute'); $data['tab_review'] = sprintf($this->language->get('tab_review')); $data['logged'] = $this->customer->isLogged(); $data['compare'] = $this->url->link('product/compare'); $data['products'] = array(); $filter_data = array( 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProductSpecials(); $results = $this->model_catalog_product->getProductSpecials($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_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 = (int)$result['rating']; } else { $rating = false; } $images = $this->model_catalog_product->getProductImages($result['product_id']); if (!empty($images[0]['image']) && $images[0]['image'] != $image) { $image2 = $this->model_tool_image->resize($images[0]['image'], $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height')); } else if (!empty($images[1]['image'])) { $image2 = $this->model_tool_image->resize($images[1]['image'], $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height')); } else { $image2 = $image; } // XD Stickers start $this->load->model('setting/setting'); $xdstickers = $this->config->get('xdstickers'); $current_language_id = $this->config->get('config_language_id'); $product_xdstickers = array(); $data['xdstickers_position'] = ($xdstickers['position'] == '0') ? ' position_upleft' : ' position_upright'; if ($xdstickers['status']) { if ($xdstickers['sale']['status'] == '1' && $special) { if ($xdstickers['sale']['discount_status'] == '1') { $sale_value = ceil(((float)$result['price'] - (float)$result['special']) / ((float)$result['price'] * 0.01)); $sale_text = $xdstickers['sale']['text'][$current_language_id] . ' -' . strval($sale_value) . '%'; } else { $sale_text = $xdstickers['sale']['text'][$current_language_id]; } $product_xdstickers[] = array( 'id' => 'xdsticker_sale', 'text' => $sale_text ); } if ($xdstickers['bestseller']['status'] == '1') { $bestsellers = $this->model_catalog_product->getBestSellerProducts((int)$xdstickers['bestseller']['property']); foreach ($bestsellers as $bestseller) { if ($bestseller['product_id'] == $result['product_id']) { $product_xdstickers[] = array( 'id' => 'xdsticker_bestseller', 'text' => $xdstickers['bestseller']['text'][$current_language_id] ); } } } if ($xdstickers['novelty']['status'] == '1') { if ((strtotime($result['date_added']) + intval($xdstickers['novelty']['property']) * 24 * 3600) > time()) { $product_xdstickers[] = array( 'id' => 'xdsticker_novelty', 'text' => $xdstickers['novelty']['text'][$current_language_id] ); } } if ($xdstickers['last']['status'] == '1') { if ($result['quantity'] <= intval($xdstickers['last']['property']) && $result['quantity'] > 0) { $product_xdstickers[] = array( 'id' => 'xdsticker_last', 'text' => $xdstickers['last']['text'][$current_language_id] ); } } if ($xdstickers['freeshipping']['status'] == '1') { if ((float)$result['special'] >= intval($xdstickers['freeshipping']['property'])) { $product_xdstickers[] = array( 'id' => 'xdsticker_freeshipping', 'text' => $xdstickers['freeshipping']['text'][$current_language_id] ); } else if ((float)$result['price'] >= intval($xdstickers['freeshipping']['property'])) { $product_xdstickers[] = array( 'id' => 'xdsticker_freeshipping', 'text' => $xdstickers['freeshipping']['text'][$current_language_id] ); } } // STOCK stickers if (isset($xdstickers['stock']) && !empty($xdstickers['stock'])) { foreach($xdstickers['stock'] as $key => $value) { if (isset($value['status']) && $value['status'] == '1' && $key == $result['stock_status_id'] && $result['quantity'] <= 0) { $product_xdstickers[] = array( 'id' => 'xdsticker_stock_' . $key, 'text' => $result['stock_status'] ); } } } // CUSTOM stickers $this->load->model('extension/module/xdstickers'); $custom_xdstickers_id = $this->model_extension_module_xdstickers->getCustomXDStickersProduct($result['product_id']); if (!empty($custom_xdstickers_id)) { foreach ($custom_xdstickers_id as $custom_xdsticker_id) { $custom_xdsticker = $this->model_extension_module_xdstickers->getCustomXDSticker($custom_xdsticker_id['xdsticker_id']); $custom_xdsticker_text = json_decode($custom_xdsticker['text'], true); // var_dump($custom_xdsticker); if ($custom_xdsticker['status'] == '1') { $custom_sticker_class = 'xdsticker_' . $custom_xdsticker_id['xdsticker_id']; $product_xdstickers[] = array( 'id' => $custom_sticker_class, 'text' => $custom_xdsticker_text[$current_language_id] ); } } } } // XD Stickers end $options = array(); $store_options_data = $this->config->get('store_options_data'); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); if (isset($store_options_data['allowed_options']) && (in_array($option['option_id'], $store_options_data['allowed_options']))) { 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']) { $option_price = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $option_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' => ($option_value['image']) ? $this->model_tool_image->resize($option_value['image'], 50, 50) : '', 'price' => $option_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( 'options' => $options, 'product_xdstickers' => $product_xdstickers, 'product_id' => $result['product_id'], 'thumb' => $image, 'thumb2' => $image2, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'model' => $result['model'], 'special' => $special, 'tax' => $tax, 'minimum' => ($result['minimum'] > 0) ? $result['minimum'] : 1, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'] . $url) ); } $data['options'] = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['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' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 50, 50) : '', 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $data['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['review_status'] = $this->config->get('config_review_status'); if ($this->config->get('config_review_guest') || $this->customer->isLogged()) { $data['review_guest'] = true; } else { $data['review_guest'] = false; } if ($this->customer->isLogged()) { $data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName(); } else { $data['customer_name'] = ''; } $url = ''; if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/special', 'sort=p.sort_order&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/special', 'sort=pd.name&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/special', 'sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'ps.price-ASC', 'href' => $this->url->link('product/special', 'sort=ps.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'ps.price-DESC', 'href' => $this->url->link('product/special', 'sort=ps.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/special', 'sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/special', 'sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/special', 'sort=p.model&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/special', 'sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value) { $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->url->link('product/special', $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->url = $this->url->link('product/special', $url . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit)); // http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html if ($page == 1) { $this->document->addLink($this->url->link('product/special', '', true), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/special', '', true), 'prev'); } else { $this->document->addLink($this->url->link('product/special', 'page='. ($page - 1), true), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/special', 'page='. ($page + 1), true), 'next'); } $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $data['continue'] = $this->url->link('common/home'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('product/special', $data)); } } Надіслати Поділитися на інших сайтах More sharing options... DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 У вас неправильно установлен модуль, который выводит опции в списке товаров (категории, производители, акции и т.д.). Нужно искать модификатор, который вносит изменения начиная со строки 313, и подгонять его под ваш контроллер. За вознаграждение могу помочь. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 (змінено) @DariyGRAY вознаградил бы, да к сожалению пока не могу. У меня стоит модуль дополнительных страниц (хиты продаж, популярные, новинки и товары со скидками), если удалю модуль, что добавляет эти страницы, ошибка пройдёт? Змінено 2 жовтня 2020 користувачем coder0x7b Надіслати Поділитися на інших сайтах More sharing options... DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 6 минут назад, coder0x7b сказал: @DariyGRAY вознаградил бы, да к сожалению пока не могу. У меня стоит модуль дополнительных страниц (хиты продаж, популярные, новинки и товары со скидками), если удалю модуль, что добавляет эти страницы, ошибка пройдёт? Нет. Вам нужен модуль, который выводит опции в списках товаров Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY просто так не поможете? Надіслати Поділитися на інших сайтах More sharing options... DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 24 минуты назад, coder0x7b сказал: @DariyGRAY просто так не поможете? Так а как мне знать что у вас там за модули и какие используются модификаторы? Среди всех модификаторов нужно найти тот, который вносит изменения в контроллеры страниц со списками товаров для их расширения опциями. Потом нужно исправить данный модификатор. Там может быть несколько конфликтов, от которых нужно избавиться. Если мы будем все это выяснять в переписке, уйдет очень много времени. В противном случае мне придется подключаться к вашему ftp и делать определенную работу за которую я привык получать оплату. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY единственный модификатор который установлен и связан с товарами, это модификатор который выводит опцию размера в товаре, но почему он конфликтует только на странице скидок/популярных/новинок (добавленные страницы через модуль) ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Ошибка Undefined index Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV
coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 (змінено) @Fedka а как посмотреть это? Змінено 2 жовтня 2020 користувачем coder0x7b Надіслати Поділитися на інших сайтах More sharing options...
coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY Спойлер <?php class ControllerProductSpecial extends Controller { public function index() { $this->load->language('product/special'); $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get($this->config->get('config_theme') . '_product_limit'); } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } $this->document->setTitle($this->language->get('heading_title')); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('product/special', $url) ); $data['heading_title'] = $this->language->get('heading_title'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); $data['button_continue'] = $this->language->get('button_continue'); $this->load->model('catalog/review'); $data['tab_description'] = $this->language->get('tab_description'); $data['tab_attribute'] = $this->language->get('tab_attribute'); $data['tab_review'] = sprintf($this->language->get('tab_review')); $data['logged'] = $this->customer->isLogged(); $data['compare'] = $this->url->link('product/compare'); $data['products'] = array(); $filter_data = array( 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProductSpecials(); $results = $this->model_catalog_product->getProductSpecials($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_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 = (int)$result['rating']; } else { $rating = false; } $images = $this->model_catalog_product->getProductImages($result['product_id']); if (!empty($images[0]['image']) && $images[0]['image'] != $image) { $image2 = $this->model_tool_image->resize($images[0]['image'], $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height')); } else if (!empty($images[1]['image'])) { $image2 = $this->model_tool_image->resize($images[1]['image'], $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height')); } else { $image2 = $image; } // XD Stickers start $this->load->model('setting/setting'); $xdstickers = $this->config->get('xdstickers'); $current_language_id = $this->config->get('config_language_id'); $product_xdstickers = array(); $data['xdstickers_position'] = ($xdstickers['position'] == '0') ? ' position_upleft' : ' position_upright'; if ($xdstickers['status']) { if ($xdstickers['sale']['status'] == '1' && $special) { if ($xdstickers['sale']['discount_status'] == '1') { $sale_value = ceil(((float)$result['price'] - (float)$result['special']) / ((float)$result['price'] * 0.01)); $sale_text = $xdstickers['sale']['text'][$current_language_id] . ' -' . strval($sale_value) . '%'; } else { $sale_text = $xdstickers['sale']['text'][$current_language_id]; } $product_xdstickers[] = array( 'id' => 'xdsticker_sale', 'text' => $sale_text ); } if ($xdstickers['bestseller']['status'] == '1') { $bestsellers = $this->model_catalog_product->getBestSellerProducts((int)$xdstickers['bestseller']['property']); foreach ($bestsellers as $bestseller) { if ($bestseller['product_id'] == $result['product_id']) { $product_xdstickers[] = array( 'id' => 'xdsticker_bestseller', 'text' => $xdstickers['bestseller']['text'][$current_language_id] ); } } } if ($xdstickers['novelty']['status'] == '1') { if ((strtotime($result['date_added']) + intval($xdstickers['novelty']['property']) * 24 * 3600) > time()) { $product_xdstickers[] = array( 'id' => 'xdsticker_novelty', 'text' => $xdstickers['novelty']['text'][$current_language_id] ); } } if ($xdstickers['last']['status'] == '1') { if ($result['quantity'] <= intval($xdstickers['last']['property']) && $result['quantity'] > 0) { $product_xdstickers[] = array( 'id' => 'xdsticker_last', 'text' => $xdstickers['last']['text'][$current_language_id] ); } } if ($xdstickers['freeshipping']['status'] == '1') { if ((float)$result['special'] >= intval($xdstickers['freeshipping']['property'])) { $product_xdstickers[] = array( 'id' => 'xdsticker_freeshipping', 'text' => $xdstickers['freeshipping']['text'][$current_language_id] ); } else if ((float)$result['price'] >= intval($xdstickers['freeshipping']['property'])) { $product_xdstickers[] = array( 'id' => 'xdsticker_freeshipping', 'text' => $xdstickers['freeshipping']['text'][$current_language_id] ); } } // STOCK stickers if (isset($xdstickers['stock']) && !empty($xdstickers['stock'])) { foreach($xdstickers['stock'] as $key => $value) { if (isset($value['status']) && $value['status'] == '1' && $key == $result['stock_status_id'] && $result['quantity'] <= 0) { $product_xdstickers[] = array( 'id' => 'xdsticker_stock_' . $key, 'text' => $result['stock_status'] ); } } } // CUSTOM stickers $this->load->model('extension/module/xdstickers'); $custom_xdstickers_id = $this->model_extension_module_xdstickers->getCustomXDStickersProduct($result['product_id']); if (!empty($custom_xdstickers_id)) { foreach ($custom_xdstickers_id as $custom_xdsticker_id) { $custom_xdsticker = $this->model_extension_module_xdstickers->getCustomXDSticker($custom_xdsticker_id['xdsticker_id']); $custom_xdsticker_text = json_decode($custom_xdsticker['text'], true); // var_dump($custom_xdsticker); if ($custom_xdsticker['status'] == '1') { $custom_sticker_class = 'xdsticker_' . $custom_xdsticker_id['xdsticker_id']; $product_xdstickers[] = array( 'id' => $custom_sticker_class, 'text' => $custom_xdsticker_text[$current_language_id] ); } } } } // XD Stickers end $options = array(); $store_options_data = $this->config->get('store_options_data'); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); if (isset($store_options_data['allowed_options']) && (in_array($option['option_id'], $store_options_data['allowed_options']))) { 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']) { $option_price = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $option_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' => ($option_value['image']) ? $this->model_tool_image->resize($option_value['image'], 50, 50) : '', 'price' => $option_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( 'options' => $options, 'product_xdstickers' => $product_xdstickers, 'product_id' => $result['product_id'], 'thumb' => $image, 'thumb2' => $image2, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'model' => $result['model'], 'special' => $special, 'tax' => $tax, 'minimum' => ($result['minimum'] > 0) ? $result['minimum'] : 1, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'] . $url) ); } $data['options'] = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['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' => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 50, 50) : '', 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $data['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['review_status'] = $this->config->get('config_review_status'); if ($this->config->get('config_review_guest') || $this->customer->isLogged()) { $data['review_guest'] = true; } else { $data['review_guest'] = false; } if ($this->customer->isLogged()) { $data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName(); } else { $data['customer_name'] = ''; } $url = ''; if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/special', 'sort=p.sort_order&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/special', 'sort=pd.name&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/special', 'sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'ps.price-ASC', 'href' => $this->url->link('product/special', 'sort=ps.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'ps.price-DESC', 'href' => $this->url->link('product/special', 'sort=ps.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/special', 'sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/special', 'sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/special', 'sort=p.model&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/special', 'sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value) { $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->url->link('product/special', $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->url = $this->url->link('product/special', $url . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit)); // http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html if ($page == 1) { $this->document->addLink($this->url->link('product/special', '', true), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/special', '', true), 'prev'); } else { $this->document->addLink($this->url->link('product/special', 'page='. ($page - 1), true), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/special', 'page='. ($page + 1), true), 'next'); } $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $data['continue'] = $this->url->link('common/home'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('product/special', $data)); } } Надіслати Поділитися на інших сайтах More sharing options...
DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 У вас неправильно установлен модуль, который выводит опции в списке товаров (категории, производители, акции и т.д.). Нужно искать модификатор, который вносит изменения начиная со строки 313, и подгонять его под ваш контроллер. За вознаграждение могу помочь. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 (змінено) @DariyGRAY вознаградил бы, да к сожалению пока не могу. У меня стоит модуль дополнительных страниц (хиты продаж, популярные, новинки и товары со скидками), если удалю модуль, что добавляет эти страницы, ошибка пройдёт? Змінено 2 жовтня 2020 користувачем coder0x7b Надіслати Поділитися на інших сайтах More sharing options... DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 6 минут назад, coder0x7b сказал: @DariyGRAY вознаградил бы, да к сожалению пока не могу. У меня стоит модуль дополнительных страниц (хиты продаж, популярные, новинки и товары со скидками), если удалю модуль, что добавляет эти страницы, ошибка пройдёт? Нет. Вам нужен модуль, который выводит опции в списках товаров Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY просто так не поможете? Надіслати Поділитися на інших сайтах More sharing options... DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 24 минуты назад, coder0x7b сказал: @DariyGRAY просто так не поможете? Так а как мне знать что у вас там за модули и какие используются модификаторы? Среди всех модификаторов нужно найти тот, который вносит изменения в контроллеры страниц со списками товаров для их расширения опциями. Потом нужно исправить данный модификатор. Там может быть несколько конфликтов, от которых нужно избавиться. Если мы будем все это выяснять в переписке, уйдет очень много времени. В противном случае мне придется подключаться к вашему ftp и делать определенную работу за которую я привык получать оплату. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY единственный модификатор который установлен и связан с товарами, это модификатор который выводит опцию размера в товаре, но почему он конфликтует только на странице скидок/популярных/новинок (добавленные страницы через модуль) ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Ошибка Undefined index
coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 (змінено) @DariyGRAY вознаградил бы, да к сожалению пока не могу. У меня стоит модуль дополнительных страниц (хиты продаж, популярные, новинки и товары со скидками), если удалю модуль, что добавляет эти страницы, ошибка пройдёт? Змінено 2 жовтня 2020 користувачем coder0x7b Надіслати Поділитися на інших сайтах More sharing options...
DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 6 минут назад, coder0x7b сказал: @DariyGRAY вознаградил бы, да к сожалению пока не могу. У меня стоит модуль дополнительных страниц (хиты продаж, популярные, новинки и товары со скидками), если удалю модуль, что добавляет эти страницы, ошибка пройдёт? Нет. Вам нужен модуль, который выводит опции в списках товаров Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY просто так не поможете? Надіслати Поділитися на інших сайтах More sharing options... DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 24 минуты назад, coder0x7b сказал: @DariyGRAY просто так не поможете? Так а как мне знать что у вас там за модули и какие используются модификаторы? Среди всех модификаторов нужно найти тот, который вносит изменения в контроллеры страниц со списками товаров для их расширения опциями. Потом нужно исправить данный модификатор. Там может быть несколько конфликтов, от которых нужно избавиться. Если мы будем все это выяснять в переписке, уйдет очень много времени. В противном случае мне придется подключаться к вашему ftp и делать определенную работу за которую я привык получать оплату. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY единственный модификатор который установлен и связан с товарами, это модификатор который выводит опцию размера в товаре, но почему он конфликтует только на странице скидок/популярных/новинок (добавленные страницы через модуль) ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY просто так не поможете? Надіслати Поділитися на інших сайтах More sharing options...
DariyGRAY Опубліковано: 2 жовтня 2020 Share Опубліковано: 2 жовтня 2020 24 минуты назад, coder0x7b сказал: @DariyGRAY просто так не поможете? Так а как мне знать что у вас там за модули и какие используются модификаторы? Среди всех модификаторов нужно найти тот, который вносит изменения в контроллеры страниц со списками товаров для их расширения опциями. Потом нужно исправить данный модификатор. Там может быть несколько конфликтов, от которых нужно избавиться. Если мы будем все это выяснять в переписке, уйдет очень много времени. В противном случае мне придется подключаться к вашему ftp и делать определенную работу за которую я привык получать оплату. Надіслати Поділитися на інших сайтах More sharing options... coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY единственный модификатор который установлен и связан с товарами, это модификатор который выводит опцию размера в товаре, но почему он конфликтует только на странице скидок/популярных/новинок (добавленные страницы через модуль) ? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
coder0x7b Опубліковано: 2 жовтня 2020 Автор Share Опубліковано: 2 жовтня 2020 @DariyGRAY единственный модификатор который установлен и связан с товарами, это модификатор который выводит опцию размера в товаре, но почему он конфликтует только на странице скидок/популярных/новинок (добавленные страницы через модуль) ? Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts