Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 16 минут назад, Dimusik сказал: ладно попробую еще раз щас, там скорее всего в TWIGE что то поменять. да сколько тупить то можно???? Выше же написал что идем в шаблон и ставим 16 минут назад, Dimusik сказал: ВМЕСТО {% for option_value in option.product_option_value %} ставим {% for option_value in me_options %} можете еще после этого обновить модификаторы 1 Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 @Dimusik куда пропали???? как там с вашим кодом? Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 25 minutes ago, Venter said: @Dimusik куда пропали???? как там с вашим кодом? пока другим проектом занялся, чуть позже попробую.спасибо за помощь Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 52 minutes ago, Venter said: @Dimusik куда пропали???? как там с вашим кодом? РАБОТАЕТ УРА!!!!!!!!!!!!!! ВЫ ПРОСТО ГЕНИЙ!!!!!!! СПАСИБО ОГРОМНОЕ!!!!!!!!!!! Тjлько цена у всех одинаковая... :(( И при нажатии на кнопку 1200 руб в корзину летит 1500 рублей Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 2 минуты назад, Dimusik сказал: Тjлько цена у всех одинаковая... :(( значит вы неправильно получаете данные для каждого продукта. я думал вы вообще для одного продукта получаете Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Just now, Venter said: значит вы неправильно получаете данные для каждого продукта. я думал вы вообще для одного продукта получаете Нет зачем для одного у меня цыкл как неправильно если всё правильно было кроме нулей. Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вы для одного продукта получаете? или для нескольких? Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 вот это $options = $this->model_catalog_product->getProductOptions($result['product_id']); в цикле идет?? вообще опенкарт трубейный, запросы в цикле это плохо, а у него таких конструкций целая куча Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 на счет одинаковых цен - может опции стоят одинаковые Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 3 minutes ago, Venter said: еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Только что, Dimusik сказал: да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно правильно ))) поэтому определение массива нужно вынести за цикл Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) и вот зачем ради нескольких строчек кода покупать модуль??? А то чуть что вот модуль иди покупай или качай Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 @Dimusik куда пропали???? как там с вашим кодом? Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 25 minutes ago, Venter said: @Dimusik куда пропали???? как там с вашим кодом? пока другим проектом занялся, чуть позже попробую.спасибо за помощь Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 52 minutes ago, Venter said: @Dimusik куда пропали???? как там с вашим кодом? РАБОТАЕТ УРА!!!!!!!!!!!!!! ВЫ ПРОСТО ГЕНИЙ!!!!!!! СПАСИБО ОГРОМНОЕ!!!!!!!!!!! Тjлько цена у всех одинаковая... :(( И при нажатии на кнопку 1200 руб в корзину летит 1500 рублей Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 2 минуты назад, Dimusik сказал: Тjлько цена у всех одинаковая... :(( значит вы неправильно получаете данные для каждого продукта. я думал вы вообще для одного продукта получаете Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Just now, Venter said: значит вы неправильно получаете данные для каждого продукта. я думал вы вообще для одного продукта получаете Нет зачем для одного у меня цыкл как неправильно если всё правильно было кроме нулей. Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вы для одного продукта получаете? или для нескольких? Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 вот это $options = $this->model_catalog_product->getProductOptions($result['product_id']); в цикле идет?? вообще опенкарт трубейный, запросы в цикле это плохо, а у него таких конструкций целая куча Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 на счет одинаковых цен - может опции стоят одинаковые Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 3 minutes ago, Venter said: еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Только что, Dimusik сказал: да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно правильно ))) поэтому определение массива нужно вынести за цикл Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) и вот зачем ради нескольких строчек кода покупать модуль??? А то чуть что вот модуль иди покупай или качай Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 25 minutes ago, Venter said: @Dimusik куда пропали???? как там с вашим кодом? пока другим проектом занялся, чуть позже попробую.спасибо за помощь Надіслати Поділитися на інших сайтах More sharing options...
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 52 minutes ago, Venter said: @Dimusik куда пропали???? как там с вашим кодом? РАБОТАЕТ УРА!!!!!!!!!!!!!! ВЫ ПРОСТО ГЕНИЙ!!!!!!! СПАСИБО ОГРОМНОЕ!!!!!!!!!!! Тjлько цена у всех одинаковая... :(( И при нажатии на кнопку 1200 руб в корзину летит 1500 рублей Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options...
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 2 минуты назад, Dimusik сказал: Тjлько цена у всех одинаковая... :(( значит вы неправильно получаете данные для каждого продукта. я думал вы вообще для одного продукта получаете Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Just now, Venter said: значит вы неправильно получаете данные для каждого продукта. я думал вы вообще для одного продукта получаете Нет зачем для одного у меня цыкл как неправильно если всё правильно было кроме нулей. Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вы для одного продукта получаете? или для нескольких? Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 вот это $options = $this->model_catalog_product->getProductOptions($result['product_id']); в цикле идет?? вообще опенкарт трубейный, запросы в цикле это плохо, а у него таких конструкций целая куча Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 на счет одинаковых цен - может опции стоят одинаковые Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 3 minutes ago, Venter said: еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Только что, Dimusik сказал: да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно правильно ))) поэтому определение массива нужно вынести за цикл Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) и вот зачем ради нескольких строчек кода покупать модуль??? А то чуть что вот модуль иди покупай или качай Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Just now, Venter said: значит вы неправильно получаете данные для каждого продукта. я думал вы вообще для одного продукта получаете Нет зачем для одного у меня цыкл как неправильно если всё правильно было кроме нулей. Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options...
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вы для одного продукта получаете? или для нескольких? Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 вот это $options = $this->model_catalog_product->getProductOptions($result['product_id']); в цикле идет?? вообще опенкарт трубейный, запросы в цикле это плохо, а у него таких конструкций целая куча Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 на счет одинаковых цен - может опции стоят одинаковые Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 3 minutes ago, Venter said: еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Только что, Dimusik сказал: да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно правильно ))) поэтому определение массива нужно вынести за цикл Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) и вот зачем ради нескольких строчек кода покупать модуль??? А то чуть что вот модуль иди покупай или качай Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 вот это $options = $this->model_catalog_product->getProductOptions($result['product_id']); в цикле идет?? вообще опенкарт трубейный, запросы в цикле это плохо, а у него таких конструкций целая куча Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 на счет одинаковых цен - может опции стоят одинаковые Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 3 minutes ago, Venter said: еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Только что, Dimusik сказал: да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно правильно ))) поэтому определение массива нужно вынести за цикл Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) и вот зачем ради нескольких строчек кода покупать модуль??? А то чуть что вот модуль иди покупай или качай Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 на счет одинаковых цен - может опции стоят одинаковые Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 3 minutes ago, Venter said: еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Только что, Dimusik сказал: да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно правильно ))) поэтому определение массива нужно вынести за цикл Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) и вот зачем ради нескольких строчек кода покупать модуль??? А то чуть что вот модуль иди покупай или качай Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 на счет одинаковых цен - может опции стоят одинаковые Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 3 minutes ago, Venter said: еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Только что, Dimusik сказал: да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно правильно ))) поэтому определение массива нужно вынести за цикл Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) и вот зачем ради нескольких строчек кода покупать модуль??? А то чуть что вот модуль иди покупай или качай Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 3 minutes ago, Venter said: еще один момент!!!!! Важный вот это $data['me_options'] = array(); вставить не после вот этого $options = $this->model_catalog_product->getProductOptions($result['product_id']); а после $results = $this->model_catalog_product->getProducts($filter_data); в итоге вот так выходит $results = $this->model_catalog_product->getProducts($filter_data); $data['me_options'] = array(); foreach ($results as $result) { да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно Надіслати Поділитися на інших сайтах More sharing options...
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Только что, Dimusik сказал: да я тоже об этом подумал массив перезаписывается постояно, обьявление идет в цикле постояно правильно ))) поэтому определение массива нужно вынести за цикл Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) и вот зачем ради нескольких строчек кода покупать модуль??? А то чуть что вот модуль иди покупай или качай Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) и вот зачем ради нескольких строчек кода покупать модуль??? А то чуть что вот модуль иди покупай или качай Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 2 minutes ago, Venter said: правильно ))) поэтому определение массива нужно вынести за цикл щас пробну еще разок Надіслати Поділитися на інших сайтах More sharing options...
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 вроде всё работает , но вот такая штука)))))))) Надіслати Поділитися на інших сайтах More sharing options...
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 видимо потому что цикл в цикле Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) ан нет, у меня все четко выводит Выложи весь код контройлера Змінено 31 січня 2021 користувачем Venter Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) 17 minutes ago, Venter said: ан нет, у меня все четко выводит Выложи весь код контройлера щас у меня вот идея родилась, может просто масивы затираются я проверил через вывод показывает что один елемент в списке содержиться но пишет ошибку Warning: Use of undefined constant countt - assumed 'countt' (this will throw an Error in a future version of PHP) in Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options...
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) Неужели никто не покажет код проходки по масиву с изменением в нем некоторых значений и сохранить его обратно? вот это? category.php Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options...
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 ошибка потому что синтаксис не верный Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Звіти про помилки Сделать список цен опций без нулей после точки
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 (змінено) а как правильно обьявить переменную? и пройтись по масивам по этим всем??Помогите реализовать этот алгоритм плиз $countt=0; foreach ($options as $option) { foreach ($option['product_option_value'] as $option_value) { $countt++; $option['product_option_value'][countt] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => (int)$option_value['price']//, //'price_prefix' => $option_value['price_prefix'] ); } $options[countt] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $option['product_option_value'], 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } echo (count($options)); Змінено 31 січня 2021 користувачем Dimusik Надіслати Поділитися на інших сайтах More sharing options...
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 (змінено) 2 минуты назад, Dimusik сказал: а как правильно обьявить переменную? и пройтись по масивам по этим всем?? УЧИТЬ МАНУАЛ вот держи, должно работать Спойлер <?php // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['text_empty'] = $this->language->get('text_empty'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; $this->document->setRobots('noindex,follow'); } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $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']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { //$image = $this->model_tool_image->resize($result['image'], 100, 100); $image = '/image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', 1, 1); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $image ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); //я добавлял //$data['me_options'] = array(); //я добавлял $product_option_value_data = array(); $data['me_options'] = array(); 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_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $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; } $options = $this->model_catalog_product->getProductOptions($result['product_id']); //НЕУЖЕЛИ НЕЛЬЗЯ БЫЛО СКОПИРОВАТЬ НОРМАЛЬНО ИЗ ФАЙЛА PRODUCT???? //А ГОВОРИШЬ ЧТО ПРОГРАММИСТ foreach($options as $option){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { $data['me_optionse'][] = array('name' => $option_value['name'], 'price' => number_format($option_value['price'], 0, '', ''), 'product_option_value_id' => $option_value['product_option_value_id'] ); if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $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['products'][] = array( 'product_id' => $result['product_id'], 'options' => $options, 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.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/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&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/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('theme_' . $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/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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/category', 'path=' . $this->request->get['path'] . $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/category', 'path=' . $category_info['category_id']), 'canonical'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical'); } if ($page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), '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/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $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('error/not_found', $data)); } } } Змінено 31 січня 2021 користувачем Venter с нужной правкой Надіслати Поділитися на інших сайтах More sharing options... Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Venter Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 исправленый чуть выложил Надіслати Поділитися на інших сайтах More sharing options... Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options... kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 3 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Dimusik Опубліковано: 31 січня 2021 Автор Share Опубліковано: 31 січня 2021 10 minutes ago, Venter said: исправленый чуть выложил спасибо щас пробну, я ж говорю синтаксис незнакомый потому могу что то коряво где то скопировать Надіслати Поділитися на інших сайтах More sharing options...
kwakin Опубліковано: 31 січня 2021 Share Опубліковано: 31 січня 2021 Вам комиссар жюв правильно намекал Что у вас сайт с кривым кодом И как это потом работать будет одному богу известно Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts