arthyrgrex Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Добрый день.Домен:http://modamio2.ru/Версия ocStore 2.1.0.2.1Включено тип ЧПУ SeoPro - все отлично работает (и категории, и подкатегории, и товары).Структура ЧПУ следующая:Главная страница:http://modamio2.ru/Главная страница > Каталог женской одежды: http://modamio2.ru/vitrina/Главная страница > Каталог женской одежды > Детская одежда:http://modamio2.ru/vitrina/detskaya-odejda/Главная страница > Каталог женской одежды > Детская одежда > Трикотаж для девочек:http://modamio2.ru/vitrina/detskaya-odejda/trikotaj-dlya-devochek/Главная страница > Каталог женской одежды > Детская одежда > Трикотаж для девочек > Детский джемпер в морском стиле:http://modamio2.ru/detskiy-djemper-v-morskom-styleВопрос:Как сделать так, чтобы ЧПУ каждой отдельной страницы формировался сразу после http://modamio2.ru/ без дополнительных категорий и подкатегорий ?Пример (по вышеуказанным страницам):Главная страница:http://modamio2.ru/Главная страница > Каталог женской одежды:http://modamio2.ru/vitrina/Главная страница > Каталог женской одежды > Детская одежда:http://modamio2.ru/detskaya-odejda/Главная страница > Каталог женской одежды > Детская одежда > Трикотаж для девочек:http://modamio2.ru/trikotaj-dlya-devochek/Главная страница > Каталог женской одежды > Детская одежда > Трикотаж для девочек > Детский джемпер в морском стиле:http://modamio2.ru/detskiy-djemper-v-morskom-styleЗаранее вам благодарен!А то уже обыскался - все никак не найду решения.. Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options...
php5 Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 КЕП внимательно читайте чего просит Автор темы! Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Змінено 25 квітня 2016 користувачем Waha 2 Надіслати Поділитися на інших сайтах More sharing options... php5 Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 КЕП внимательно читайте чего просит Автор темы! Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Блин, Waha - красавчик, люблю тебя ! )) Все отлично работает - урлы формируются без родительских категорий http://modamio2.ru/ Только есть 1 но =) По инструкции 2-й пункт выполнил, а вот в первом: https://opencartforum.com/topic/59699-%D1%85%D0%BB%D0%B5%D0%B1%D0%BD%D1%8B%D0%B5-%D0%BA%D1%80%D0%BE%D1%88%D0%BA%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9-%D0%B1%D0%B5%D0%B7-%D1%80%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-url-%D0%B2-seo-pr/?do=findComment&comment=534193 "Заходим в catalog/controller/catalog/category.php перед строкой" У меня нету такого каталога catalog/controller/catalog/ Может его создать? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Заходим в catalog/controller/catalog/category.php перед строкой $category_info = $this->model_catalog_category->getCategory($category_id); Добавляем //Fix Category breadscrumbs FULL with SEO_PRO $pathway = $this->model_catalog_category->getCategoryPath($category_id); if($pathway){ foreach ($pathway as $way) { $category_way = $this->model_catalog_category->getCategory($way['path_id']); $this->data['breadcrumbs'][] = array( 'text' => $category_way['name'], 'href' => $this->url->link('product/category', 'path=' . $way['path_id'] . $url), 'separator' => $this->language->get('text_separator') ); } } Есть такое. А вот: Ниже примерно в 170 строке удалите код $this->data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']), 'separator' => $this->language->get('text_separator') ); Нету Похожие строки встречаются в 4-х местах. Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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');if (isset($this->request->get['filter'])) {$filter = $this->request->get['filter'];} else {$filter = '';}if (isset($this->request->get['sort'])) {$sort = $this->request->get['sort'];} else {$sort = 'p.sort_order';}if (isset($this->request->get['order'])) {$order = $this->request->get['order'];} else {$order = 'ASC';}if (isset($this->request->get['page'])) {$page = $this->request->get['page'];} else {$page = 1;}if (isset($this->request->get['limit'])) {$limit = (int)$this->request->get['limit'];} else {$limit = $this->config->get('config_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']);}$this->document->setDescription($category_info['meta_description']);$this->document->setKeywords($category_info['meta_keyword']);if ($category_info['meta_h1']) {$data['heading_title'] = $category_info['meta_h1'];} else {$data['heading_title'] = $category_info['name'];}$data['text_refine'] = $this->language->get('text_refine');$data['text_empty'] = $this->language->get('text_empty');$data['text_quantity'] = $this->language->get('text_quantity');$data['text_manufacturer'] = $this->language->get('text_manufacturer');$data['text_model'] = $this->language->get('text_model');$data['text_price'] = $this->language->get('text_price');$data['text_tax'] = $this->language->get('text_tax');$data['text_points'] = $this->language->get('text_points');$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));$data['text_sort'] = $this->language->get('text_sort');$data['text_limit'] = $this->language->get('text_limit');$data['button_cart'] = $this->language->get('button_cart');$data['button_wishlist'] = $this->language->get('button_wishlist');$data['button_compare'] = $this->language->get('button_compare');$data['button_continue'] = $this->language->get('button_continue');$data['button_list'] = $this->language->get('button_list');$data['button_grid'] = $this->language->get('button_grid');// 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('config_image_category_width'), $this->config->get('config_image_category_height'));$this->document->setOgImage($data['thumb']);} 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);$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));}$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);foreach ($results as $result) {if ($result['image']) {$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));} else {$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));}if (($this->config->get('config_customer_price') && $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')));} 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')));} else {$special = false;}if ($this->config->get('config_tax')) {$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);} else {$tax = false;}if ($this->config->get('config_review_status')) {$rating = (int)$result['rating'];} else {$rating = false;}$data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'name' => $result['name'],'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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.htmlif ($page == 1) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'canonical');} elseif ($page == 2) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev');} else {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev');}if ($limit && ceil($product_total / $limit) > $page) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error');$data['text_error'] = $this->language->get('text_error');$data['button_continue'] = $this->language->get('button_continue');$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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));}}}} Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get('config_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']); } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); // 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('config_image_category_width'), $this->config->get('config_image_category_height')); $this->document->setOgImage($data['thumb']); } 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 ); $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) ); } $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); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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'], 'SSL'), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } } Это у вас контроллер OC 2.x По идее надо этот код удалить: // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); Только тогда и все остальное что у меня в инструкции надо немного изменить.. под 2 версию, так как там все под 1,5 было Змінено 25 квітня 2016 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 После таких правок на странице товара все хорошо:http://modamio2.ru/detskiy-djemper-v-morskom-styleа вот на страницах категорий и подкатегорий:http://modamio2.ru/trikotaj-dlya-devochek/http://modamio2.ru/detskaya-odejda/ругается на 96 строку: Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96 это строка $this->data['breadcrumbs'][] = array( Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 КЕП внимательно читайте чего просит Автор темы! Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Змінено 25 квітня 2016 користувачем Waha 2 Надіслати Поділитися на інших сайтах More sharing options... php5 Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 КЕП внимательно читайте чего просит Автор темы! Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Блин, Waha - красавчик, люблю тебя ! )) Все отлично работает - урлы формируются без родительских категорий http://modamio2.ru/ Только есть 1 но =) По инструкции 2-й пункт выполнил, а вот в первом: https://opencartforum.com/topic/59699-%D1%85%D0%BB%D0%B5%D0%B1%D0%BD%D1%8B%D0%B5-%D0%BA%D1%80%D0%BE%D1%88%D0%BA%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9-%D0%B1%D0%B5%D0%B7-%D1%80%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-url-%D0%B2-seo-pr/?do=findComment&comment=534193 "Заходим в catalog/controller/catalog/category.php перед строкой" У меня нету такого каталога catalog/controller/catalog/ Может его создать? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Заходим в catalog/controller/catalog/category.php перед строкой $category_info = $this->model_catalog_category->getCategory($category_id); Добавляем //Fix Category breadscrumbs FULL with SEO_PRO $pathway = $this->model_catalog_category->getCategoryPath($category_id); if($pathway){ foreach ($pathway as $way) { $category_way = $this->model_catalog_category->getCategory($way['path_id']); $this->data['breadcrumbs'][] = array( 'text' => $category_way['name'], 'href' => $this->url->link('product/category', 'path=' . $way['path_id'] . $url), 'separator' => $this->language->get('text_separator') ); } } Есть такое. А вот: Ниже примерно в 170 строке удалите код $this->data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']), 'separator' => $this->language->get('text_separator') ); Нету Похожие строки встречаются в 4-х местах. Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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');if (isset($this->request->get['filter'])) {$filter = $this->request->get['filter'];} else {$filter = '';}if (isset($this->request->get['sort'])) {$sort = $this->request->get['sort'];} else {$sort = 'p.sort_order';}if (isset($this->request->get['order'])) {$order = $this->request->get['order'];} else {$order = 'ASC';}if (isset($this->request->get['page'])) {$page = $this->request->get['page'];} else {$page = 1;}if (isset($this->request->get['limit'])) {$limit = (int)$this->request->get['limit'];} else {$limit = $this->config->get('config_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']);}$this->document->setDescription($category_info['meta_description']);$this->document->setKeywords($category_info['meta_keyword']);if ($category_info['meta_h1']) {$data['heading_title'] = $category_info['meta_h1'];} else {$data['heading_title'] = $category_info['name'];}$data['text_refine'] = $this->language->get('text_refine');$data['text_empty'] = $this->language->get('text_empty');$data['text_quantity'] = $this->language->get('text_quantity');$data['text_manufacturer'] = $this->language->get('text_manufacturer');$data['text_model'] = $this->language->get('text_model');$data['text_price'] = $this->language->get('text_price');$data['text_tax'] = $this->language->get('text_tax');$data['text_points'] = $this->language->get('text_points');$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));$data['text_sort'] = $this->language->get('text_sort');$data['text_limit'] = $this->language->get('text_limit');$data['button_cart'] = $this->language->get('button_cart');$data['button_wishlist'] = $this->language->get('button_wishlist');$data['button_compare'] = $this->language->get('button_compare');$data['button_continue'] = $this->language->get('button_continue');$data['button_list'] = $this->language->get('button_list');$data['button_grid'] = $this->language->get('button_grid');// 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('config_image_category_width'), $this->config->get('config_image_category_height'));$this->document->setOgImage($data['thumb']);} 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);$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));}$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);foreach ($results as $result) {if ($result['image']) {$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));} else {$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));}if (($this->config->get('config_customer_price') && $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')));} 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')));} else {$special = false;}if ($this->config->get('config_tax')) {$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);} else {$tax = false;}if ($this->config->get('config_review_status')) {$rating = (int)$result['rating'];} else {$rating = false;}$data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'name' => $result['name'],'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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.htmlif ($page == 1) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'canonical');} elseif ($page == 2) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev');} else {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev');}if ($limit && ceil($product_total / $limit) > $page) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error');$data['text_error'] = $this->language->get('text_error');$data['button_continue'] = $this->language->get('button_continue');$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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));}}}} Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get('config_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']); } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); // 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('config_image_category_width'), $this->config->get('config_image_category_height')); $this->document->setOgImage($data['thumb']); } 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 ); $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) ); } $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); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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'], 'SSL'), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } } Это у вас контроллер OC 2.x По идее надо этот код удалить: // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); Только тогда и все остальное что у меня в инструкции надо немного изменить.. под 2 версию, так как там все под 1,5 было Змінено 25 квітня 2016 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 После таких правок на странице товара все хорошо:http://modamio2.ru/detskiy-djemper-v-morskom-styleа вот на страницах категорий и подкатегорий:http://modamio2.ru/trikotaj-dlya-devochek/http://modamio2.ru/detskaya-odejda/ругается на 96 строку: Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96 это строка $this->data['breadcrumbs'][] = array( Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Змінено 25 квітня 2016 користувачем Waha 2 Надіслати Поділитися на інших сайтах More sharing options... php5 Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 КЕП внимательно читайте чего просит Автор темы! Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Блин, Waha - красавчик, люблю тебя ! )) Все отлично работает - урлы формируются без родительских категорий http://modamio2.ru/ Только есть 1 но =) По инструкции 2-й пункт выполнил, а вот в первом: https://opencartforum.com/topic/59699-%D1%85%D0%BB%D0%B5%D0%B1%D0%BD%D1%8B%D0%B5-%D0%BA%D1%80%D0%BE%D1%88%D0%BA%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9-%D0%B1%D0%B5%D0%B7-%D1%80%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-url-%D0%B2-seo-pr/?do=findComment&comment=534193 "Заходим в catalog/controller/catalog/category.php перед строкой" У меня нету такого каталога catalog/controller/catalog/ Может его создать? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Заходим в catalog/controller/catalog/category.php перед строкой $category_info = $this->model_catalog_category->getCategory($category_id); Добавляем //Fix Category breadscrumbs FULL with SEO_PRO $pathway = $this->model_catalog_category->getCategoryPath($category_id); if($pathway){ foreach ($pathway as $way) { $category_way = $this->model_catalog_category->getCategory($way['path_id']); $this->data['breadcrumbs'][] = array( 'text' => $category_way['name'], 'href' => $this->url->link('product/category', 'path=' . $way['path_id'] . $url), 'separator' => $this->language->get('text_separator') ); } } Есть такое. А вот: Ниже примерно в 170 строке удалите код $this->data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']), 'separator' => $this->language->get('text_separator') ); Нету Похожие строки встречаются в 4-х местах. Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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');if (isset($this->request->get['filter'])) {$filter = $this->request->get['filter'];} else {$filter = '';}if (isset($this->request->get['sort'])) {$sort = $this->request->get['sort'];} else {$sort = 'p.sort_order';}if (isset($this->request->get['order'])) {$order = $this->request->get['order'];} else {$order = 'ASC';}if (isset($this->request->get['page'])) {$page = $this->request->get['page'];} else {$page = 1;}if (isset($this->request->get['limit'])) {$limit = (int)$this->request->get['limit'];} else {$limit = $this->config->get('config_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']);}$this->document->setDescription($category_info['meta_description']);$this->document->setKeywords($category_info['meta_keyword']);if ($category_info['meta_h1']) {$data['heading_title'] = $category_info['meta_h1'];} else {$data['heading_title'] = $category_info['name'];}$data['text_refine'] = $this->language->get('text_refine');$data['text_empty'] = $this->language->get('text_empty');$data['text_quantity'] = $this->language->get('text_quantity');$data['text_manufacturer'] = $this->language->get('text_manufacturer');$data['text_model'] = $this->language->get('text_model');$data['text_price'] = $this->language->get('text_price');$data['text_tax'] = $this->language->get('text_tax');$data['text_points'] = $this->language->get('text_points');$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));$data['text_sort'] = $this->language->get('text_sort');$data['text_limit'] = $this->language->get('text_limit');$data['button_cart'] = $this->language->get('button_cart');$data['button_wishlist'] = $this->language->get('button_wishlist');$data['button_compare'] = $this->language->get('button_compare');$data['button_continue'] = $this->language->get('button_continue');$data['button_list'] = $this->language->get('button_list');$data['button_grid'] = $this->language->get('button_grid');// 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('config_image_category_width'), $this->config->get('config_image_category_height'));$this->document->setOgImage($data['thumb']);} 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);$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));}$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);foreach ($results as $result) {if ($result['image']) {$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));} else {$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));}if (($this->config->get('config_customer_price') && $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')));} 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')));} else {$special = false;}if ($this->config->get('config_tax')) {$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);} else {$tax = false;}if ($this->config->get('config_review_status')) {$rating = (int)$result['rating'];} else {$rating = false;}$data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'name' => $result['name'],'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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.htmlif ($page == 1) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'canonical');} elseif ($page == 2) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev');} else {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev');}if ($limit && ceil($product_total / $limit) > $page) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error');$data['text_error'] = $this->language->get('text_error');$data['button_continue'] = $this->language->get('button_continue');$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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));}}}} Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get('config_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']); } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); // 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('config_image_category_width'), $this->config->get('config_image_category_height')); $this->document->setOgImage($data['thumb']); } 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 ); $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) ); } $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); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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'], 'SSL'), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } } Это у вас контроллер OC 2.x По идее надо этот код удалить: // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); Только тогда и все остальное что у меня в инструкции надо немного изменить.. под 2 версию, так как там все под 1,5 было Змінено 25 квітня 2016 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 После таких правок на странице товара все хорошо:http://modamio2.ru/detskiy-djemper-v-morskom-styleа вот на страницах категорий и подкатегорий:http://modamio2.ru/trikotaj-dlya-devochek/http://modamio2.ru/detskaya-odejda/ругается на 96 строку: Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96 это строка $this->data['breadcrumbs'][] = array( Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
php5 Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 КЕП внимательно читайте чего просит Автор темы! Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Блин, Waha - красавчик, люблю тебя ! )) Все отлично работает - урлы формируются без родительских категорий http://modamio2.ru/ Только есть 1 но =) По инструкции 2-й пункт выполнил, а вот в первом: https://opencartforum.com/topic/59699-%D1%85%D0%BB%D0%B5%D0%B1%D0%BD%D1%8B%D0%B5-%D0%BA%D1%80%D0%BE%D1%88%D0%BA%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9-%D0%B1%D0%B5%D0%B7-%D1%80%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-url-%D0%B2-seo-pr/?do=findComment&comment=534193 "Заходим в catalog/controller/catalog/category.php перед строкой" У меня нету такого каталога catalog/controller/catalog/ Может его создать? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Заходим в catalog/controller/catalog/category.php перед строкой $category_info = $this->model_catalog_category->getCategory($category_id); Добавляем //Fix Category breadscrumbs FULL with SEO_PRO $pathway = $this->model_catalog_category->getCategoryPath($category_id); if($pathway){ foreach ($pathway as $way) { $category_way = $this->model_catalog_category->getCategory($way['path_id']); $this->data['breadcrumbs'][] = array( 'text' => $category_way['name'], 'href' => $this->url->link('product/category', 'path=' . $way['path_id'] . $url), 'separator' => $this->language->get('text_separator') ); } } Есть такое. А вот: Ниже примерно в 170 строке удалите код $this->data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']), 'separator' => $this->language->get('text_separator') ); Нету Похожие строки встречаются в 4-х местах. Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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');if (isset($this->request->get['filter'])) {$filter = $this->request->get['filter'];} else {$filter = '';}if (isset($this->request->get['sort'])) {$sort = $this->request->get['sort'];} else {$sort = 'p.sort_order';}if (isset($this->request->get['order'])) {$order = $this->request->get['order'];} else {$order = 'ASC';}if (isset($this->request->get['page'])) {$page = $this->request->get['page'];} else {$page = 1;}if (isset($this->request->get['limit'])) {$limit = (int)$this->request->get['limit'];} else {$limit = $this->config->get('config_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']);}$this->document->setDescription($category_info['meta_description']);$this->document->setKeywords($category_info['meta_keyword']);if ($category_info['meta_h1']) {$data['heading_title'] = $category_info['meta_h1'];} else {$data['heading_title'] = $category_info['name'];}$data['text_refine'] = $this->language->get('text_refine');$data['text_empty'] = $this->language->get('text_empty');$data['text_quantity'] = $this->language->get('text_quantity');$data['text_manufacturer'] = $this->language->get('text_manufacturer');$data['text_model'] = $this->language->get('text_model');$data['text_price'] = $this->language->get('text_price');$data['text_tax'] = $this->language->get('text_tax');$data['text_points'] = $this->language->get('text_points');$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));$data['text_sort'] = $this->language->get('text_sort');$data['text_limit'] = $this->language->get('text_limit');$data['button_cart'] = $this->language->get('button_cart');$data['button_wishlist'] = $this->language->get('button_wishlist');$data['button_compare'] = $this->language->get('button_compare');$data['button_continue'] = $this->language->get('button_continue');$data['button_list'] = $this->language->get('button_list');$data['button_grid'] = $this->language->get('button_grid');// 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('config_image_category_width'), $this->config->get('config_image_category_height'));$this->document->setOgImage($data['thumb']);} 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);$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));}$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);foreach ($results as $result) {if ($result['image']) {$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));} else {$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));}if (($this->config->get('config_customer_price') && $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')));} 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')));} else {$special = false;}if ($this->config->get('config_tax')) {$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);} else {$tax = false;}if ($this->config->get('config_review_status')) {$rating = (int)$result['rating'];} else {$rating = false;}$data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'name' => $result['name'],'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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.htmlif ($page == 1) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'canonical');} elseif ($page == 2) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev');} else {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev');}if ($limit && ceil($product_total / $limit) > $page) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error');$data['text_error'] = $this->language->get('text_error');$data['button_continue'] = $this->language->get('button_continue');$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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));}}}} Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get('config_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']); } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); // 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('config_image_category_width'), $this->config->get('config_image_category_height')); $this->document->setOgImage($data['thumb']); } 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 ); $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) ); } $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); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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'], 'SSL'), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } } Это у вас контроллер OC 2.x По идее надо этот код удалить: // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); Только тогда и все остальное что у меня в инструкции надо немного изменить.. под 2 версию, так как там все под 1,5 было Змінено 25 квітня 2016 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 После таких правок на странице товара все хорошо:http://modamio2.ru/detskiy-djemper-v-morskom-styleа вот на страницах категорий и подкатегорий:http://modamio2.ru/trikotaj-dlya-devochek/http://modamio2.ru/detskaya-odejda/ругается на 96 строку: Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96 это строка $this->data['breadcrumbs'][] = array( Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Блин, Waha - красавчик, люблю тебя ! )) Все отлично работает - урлы формируются без родительских категорий http://modamio2.ru/ Только есть 1 но =) По инструкции 2-й пункт выполнил, а вот в первом: https://opencartforum.com/topic/59699-%D1%85%D0%BB%D0%B5%D0%B1%D0%BD%D1%8B%D0%B5-%D0%BA%D1%80%D0%BE%D1%88%D0%BA%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9-%D0%B1%D0%B5%D0%B7-%D1%80%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-url-%D0%B2-seo-pr/?do=findComment&comment=534193 "Заходим в catalog/controller/catalog/category.php перед строкой" У меня нету такого каталога catalog/controller/catalog/ Может его создать? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Заходим в catalog/controller/catalog/category.php перед строкой $category_info = $this->model_catalog_category->getCategory($category_id); Добавляем //Fix Category breadscrumbs FULL with SEO_PRO $pathway = $this->model_catalog_category->getCategoryPath($category_id); if($pathway){ foreach ($pathway as $way) { $category_way = $this->model_catalog_category->getCategory($way['path_id']); $this->data['breadcrumbs'][] = array( 'text' => $category_way['name'], 'href' => $this->url->link('product/category', 'path=' . $way['path_id'] . $url), 'separator' => $this->language->get('text_separator') ); } } Есть такое. А вот: Ниже примерно в 170 строке удалите код $this->data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']), 'separator' => $this->language->get('text_separator') ); Нету Похожие строки встречаются в 4-х местах. Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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');if (isset($this->request->get['filter'])) {$filter = $this->request->get['filter'];} else {$filter = '';}if (isset($this->request->get['sort'])) {$sort = $this->request->get['sort'];} else {$sort = 'p.sort_order';}if (isset($this->request->get['order'])) {$order = $this->request->get['order'];} else {$order = 'ASC';}if (isset($this->request->get['page'])) {$page = $this->request->get['page'];} else {$page = 1;}if (isset($this->request->get['limit'])) {$limit = (int)$this->request->get['limit'];} else {$limit = $this->config->get('config_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']);}$this->document->setDescription($category_info['meta_description']);$this->document->setKeywords($category_info['meta_keyword']);if ($category_info['meta_h1']) {$data['heading_title'] = $category_info['meta_h1'];} else {$data['heading_title'] = $category_info['name'];}$data['text_refine'] = $this->language->get('text_refine');$data['text_empty'] = $this->language->get('text_empty');$data['text_quantity'] = $this->language->get('text_quantity');$data['text_manufacturer'] = $this->language->get('text_manufacturer');$data['text_model'] = $this->language->get('text_model');$data['text_price'] = $this->language->get('text_price');$data['text_tax'] = $this->language->get('text_tax');$data['text_points'] = $this->language->get('text_points');$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));$data['text_sort'] = $this->language->get('text_sort');$data['text_limit'] = $this->language->get('text_limit');$data['button_cart'] = $this->language->get('button_cart');$data['button_wishlist'] = $this->language->get('button_wishlist');$data['button_compare'] = $this->language->get('button_compare');$data['button_continue'] = $this->language->get('button_continue');$data['button_list'] = $this->language->get('button_list');$data['button_grid'] = $this->language->get('button_grid');// 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('config_image_category_width'), $this->config->get('config_image_category_height'));$this->document->setOgImage($data['thumb']);} 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);$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));}$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);foreach ($results as $result) {if ($result['image']) {$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));} else {$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));}if (($this->config->get('config_customer_price') && $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')));} 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')));} else {$special = false;}if ($this->config->get('config_tax')) {$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);} else {$tax = false;}if ($this->config->get('config_review_status')) {$rating = (int)$result['rating'];} else {$rating = false;}$data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'name' => $result['name'],'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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.htmlif ($page == 1) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'canonical');} elseif ($page == 2) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev');} else {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev');}if ($limit && ceil($product_total / $limit) > $page) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error');$data['text_error'] = $this->language->get('text_error');$data['button_continue'] = $this->language->get('button_continue');$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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));}}}} Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get('config_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']); } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); // 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('config_image_category_width'), $this->config->get('config_image_category_height')); $this->document->setOgImage($data['thumb']); } 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 ); $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) ); } $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); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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'], 'SSL'), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } } Это у вас контроллер OC 2.x По идее надо этот код удалить: // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); Только тогда и все остальное что у меня в инструкции надо немного изменить.. под 2 версию, так как там все под 1,5 было Змінено 25 квітня 2016 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 После таких правок на странице товара все хорошо:http://modamio2.ru/detskiy-djemper-v-morskom-styleа вот на страницах категорий и подкатегорий:http://modamio2.ru/trikotaj-dlya-devochek/http://modamio2.ru/detskaya-odejda/ругается на 96 строку: Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96 это строка $this->data['breadcrumbs'][] = array( Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Блин, Waha - красавчик, люблю тебя ! )) Все отлично работает - урлы формируются без родительских категорий http://modamio2.ru/ Только есть 1 но =) По инструкции 2-й пункт выполнил, а вот в первом: https://opencartforum.com/topic/59699-%D1%85%D0%BB%D0%B5%D0%B1%D0%BD%D1%8B%D0%B5-%D0%BA%D1%80%D0%BE%D1%88%D0%BA%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9-%D0%B1%D0%B5%D0%B7-%D1%80%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-url-%D0%B2-seo-pr/?do=findComment&comment=534193 "Заходим в catalog/controller/catalog/category.php перед строкой" У меня нету такого каталога catalog/controller/catalog/ Может его создать? Надіслати Поділитися на інших сайтах More sharing options...
ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Заходим в catalog/controller/catalog/category.php перед строкой $category_info = $this->model_catalog_category->getCategory($category_id); Добавляем //Fix Category breadscrumbs FULL with SEO_PRO $pathway = $this->model_catalog_category->getCategoryPath($category_id); if($pathway){ foreach ($pathway as $way) { $category_way = $this->model_catalog_category->getCategory($way['path_id']); $this->data['breadcrumbs'][] = array( 'text' => $category_way['name'], 'href' => $this->url->link('product/category', 'path=' . $way['path_id'] . $url), 'separator' => $this->language->get('text_separator') ); } } Есть такое. А вот: Ниже примерно в 170 строке удалите код $this->data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']), 'separator' => $this->language->get('text_separator') ); Нету Похожие строки встречаются в 4-х местах. Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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');if (isset($this->request->get['filter'])) {$filter = $this->request->get['filter'];} else {$filter = '';}if (isset($this->request->get['sort'])) {$sort = $this->request->get['sort'];} else {$sort = 'p.sort_order';}if (isset($this->request->get['order'])) {$order = $this->request->get['order'];} else {$order = 'ASC';}if (isset($this->request->get['page'])) {$page = $this->request->get['page'];} else {$page = 1;}if (isset($this->request->get['limit'])) {$limit = (int)$this->request->get['limit'];} else {$limit = $this->config->get('config_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']);}$this->document->setDescription($category_info['meta_description']);$this->document->setKeywords($category_info['meta_keyword']);if ($category_info['meta_h1']) {$data['heading_title'] = $category_info['meta_h1'];} else {$data['heading_title'] = $category_info['name'];}$data['text_refine'] = $this->language->get('text_refine');$data['text_empty'] = $this->language->get('text_empty');$data['text_quantity'] = $this->language->get('text_quantity');$data['text_manufacturer'] = $this->language->get('text_manufacturer');$data['text_model'] = $this->language->get('text_model');$data['text_price'] = $this->language->get('text_price');$data['text_tax'] = $this->language->get('text_tax');$data['text_points'] = $this->language->get('text_points');$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));$data['text_sort'] = $this->language->get('text_sort');$data['text_limit'] = $this->language->get('text_limit');$data['button_cart'] = $this->language->get('button_cart');$data['button_wishlist'] = $this->language->get('button_wishlist');$data['button_compare'] = $this->language->get('button_compare');$data['button_continue'] = $this->language->get('button_continue');$data['button_list'] = $this->language->get('button_list');$data['button_grid'] = $this->language->get('button_grid');// 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('config_image_category_width'), $this->config->get('config_image_category_height'));$this->document->setOgImage($data['thumb']);} 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);$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));}$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);foreach ($results as $result) {if ($result['image']) {$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));} else {$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));}if (($this->config->get('config_customer_price') && $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')));} 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')));} else {$special = false;}if ($this->config->get('config_tax')) {$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);} else {$tax = false;}if ($this->config->get('config_review_status')) {$rating = (int)$result['rating'];} else {$rating = false;}$data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'name' => $result['name'],'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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.htmlif ($page == 1) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'canonical');} elseif ($page == 2) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev');} else {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev');}if ($limit && ceil($product_total / $limit) > $page) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error');$data['text_error'] = $this->language->get('text_error');$data['button_continue'] = $this->language->get('button_continue');$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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));}}}} Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get('config_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']); } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); // 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('config_image_category_width'), $this->config->get('config_image_category_height')); $this->document->setOgImage($data['thumb']); } 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 ); $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) ); } $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); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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'], 'SSL'), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } } Это у вас контроллер OC 2.x По идее надо этот код удалить: // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); Только тогда и все остальное что у меня в инструкции надо немного изменить.. под 2 версию, так как там все под 1,5 было Змінено 25 квітня 2016 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 После таких правок на странице товара все хорошо:http://modamio2.ru/detskiy-djemper-v-morskom-styleа вот на страницах категорий и подкатегорий:http://modamio2.ru/trikotaj-dlya-devochek/http://modamio2.ru/detskaya-odejda/ругается на 96 строку: Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96 это строка $this->data['breadcrumbs'][] = array( Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання ЧПУ в ocStore 2.1.0.2.1
arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Надіслати Поділитися на інших сайтах More sharing options...
arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Заходим в catalog/controller/catalog/category.php перед строкой $category_info = $this->model_catalog_category->getCategory($category_id); Добавляем //Fix Category breadscrumbs FULL with SEO_PRO $pathway = $this->model_catalog_category->getCategoryPath($category_id); if($pathway){ foreach ($pathway as $way) { $category_way = $this->model_catalog_category->getCategory($way['path_id']); $this->data['breadcrumbs'][] = array( 'text' => $category_way['name'], 'href' => $this->url->link('product/category', 'path=' . $way['path_id'] . $url), 'separator' => $this->language->get('text_separator') ); } } Есть такое. А вот: Ниже примерно в 170 строке удалите код $this->data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']), 'separator' => $this->language->get('text_separator') ); Нету Похожие строки встречаются в 4-х местах. Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options...
arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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');if (isset($this->request->get['filter'])) {$filter = $this->request->get['filter'];} else {$filter = '';}if (isset($this->request->get['sort'])) {$sort = $this->request->get['sort'];} else {$sort = 'p.sort_order';}if (isset($this->request->get['order'])) {$order = $this->request->get['order'];} else {$order = 'ASC';}if (isset($this->request->get['page'])) {$page = $this->request->get['page'];} else {$page = 1;}if (isset($this->request->get['limit'])) {$limit = (int)$this->request->get['limit'];} else {$limit = $this->config->get('config_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']);}$this->document->setDescription($category_info['meta_description']);$this->document->setKeywords($category_info['meta_keyword']);if ($category_info['meta_h1']) {$data['heading_title'] = $category_info['meta_h1'];} else {$data['heading_title'] = $category_info['name'];}$data['text_refine'] = $this->language->get('text_refine');$data['text_empty'] = $this->language->get('text_empty');$data['text_quantity'] = $this->language->get('text_quantity');$data['text_manufacturer'] = $this->language->get('text_manufacturer');$data['text_model'] = $this->language->get('text_model');$data['text_price'] = $this->language->get('text_price');$data['text_tax'] = $this->language->get('text_tax');$data['text_points'] = $this->language->get('text_points');$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));$data['text_sort'] = $this->language->get('text_sort');$data['text_limit'] = $this->language->get('text_limit');$data['button_cart'] = $this->language->get('button_cart');$data['button_wishlist'] = $this->language->get('button_wishlist');$data['button_compare'] = $this->language->get('button_compare');$data['button_continue'] = $this->language->get('button_continue');$data['button_list'] = $this->language->get('button_list');$data['button_grid'] = $this->language->get('button_grid');// 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('config_image_category_width'), $this->config->get('config_image_category_height'));$this->document->setOgImage($data['thumb']);} 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);$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));}$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);foreach ($results as $result) {if ($result['image']) {$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));} else {$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));}if (($this->config->get('config_customer_price') && $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')));} 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')));} else {$special = false;}if ($this->config->get('config_tax')) {$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);} else {$tax = false;}if ($this->config->get('config_review_status')) {$rating = (int)$result['rating'];} else {$rating = false;}$data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'name' => $result['name'],'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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.htmlif ($page == 1) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'canonical');} elseif ($page == 2) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev');} else {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev');}if ($limit && ceil($product_total / $limit) > $page) {$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error');$data['text_error'] = $this->language->get('text_error');$data['button_continue'] = $this->language->get('button_continue');$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');if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));} else {$this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));}}}} Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options...
ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 (змінено) Вот мой /catalog/controller/product/catalog.php 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'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get('config_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']); } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); // 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('config_image_category_width'), $this->config->get('config_image_category_height')); $this->document->setOgImage($data['thumb']); } 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 ); $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) ); } $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); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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('config_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'], 'SSL'), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), '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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/category.tpl', $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['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $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'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } } Это у вас контроллер OC 2.x По идее надо этот код удалить: // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); Только тогда и все остальное что у меня в инструкции надо немного изменить.. под 2 версию, так как там все под 1,5 было Змінено 25 квітня 2016 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 После таких правок на странице товара все хорошо:http://modamio2.ru/detskiy-djemper-v-morskom-styleа вот на страницах категорий и подкатегорий:http://modamio2.ru/trikotaj-dlya-devochek/http://modamio2.ru/detskaya-odejda/ругается на 96 строку: Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96 это строка $this->data['breadcrumbs'][] = array( Надіслати Поділитися на інших сайтах More sharing options... arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 После таких правок на странице товара все хорошо:http://modamio2.ru/detskiy-djemper-v-morskom-styleа вот на страницах категорий и подкатегорий:http://modamio2.ru/trikotaj-dlya-devochek/http://modamio2.ru/detskaya-odejda/ругается на 96 строку: Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /var/www/arthyrgrex/data/www/modamio2.ru/catalog/controller/product/category.php on line 96 это строка $this->data['breadcrumbs'][] = array( Надіслати Поділитися на інших сайтах More sharing options...
arthyrgrex Опубліковано: 25 квітня 2016 Автор Share Опубліковано: 25 квітня 2016 (змінено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Змінено 25 квітня 2016 користувачем arthyrgrex Надіслати Поділитися на інших сайтах More sharing options...
ocdev_pro Опубліковано: 25 квітня 2016 Share Опубліковано: 25 квітня 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts