arthyrgrex Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
php5 Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 КЕП внимательно читайте чего просит Автор темы! Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 (изменено) Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Изменено 25 апреля 2016 пользователем Waha 2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... php5 Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 КЕП внимательно читайте чего просит Автор темы! Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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/ Может его создать? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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( Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 (изменено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Изменено 25 апреля 2016 пользователем arthyrgrex Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Общие вопросы ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 КЕП внимательно читайте чего просит Автор темы! Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 (изменено) Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Изменено 25 апреля 2016 пользователем Waha 2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... php5 Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 КЕП внимательно читайте чего просит Автор темы! Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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/ Может его создать? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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( Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 (изменено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Изменено 25 апреля 2016 пользователем arthyrgrex Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Общие вопросы ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 (изменено) Читайте инструкцию по ссылке: Сначала выполняем действия из второго сообщения, а потом из первого! У вас все получиться :-) Изменено 25 апреля 2016 пользователем Waha 2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... php5 Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 КЕП внимательно читайте чего просит Автор темы! Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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/ Может его создать? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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( Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 (изменено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Изменено 25 апреля 2016 пользователем arthyrgrex Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Общие вопросы ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
php5 Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 КЕП внимательно читайте чего просит Автор темы! Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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/ Может его создать? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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( Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 (изменено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Изменено 25 апреля 2016 пользователем arthyrgrex Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Общие вопросы ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Блин, точно. А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей? Пример работающего сайта отправил в ЛС Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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/ Может его создать? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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( Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 (изменено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Изменено 25 апреля 2016 пользователем arthyrgrex Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Общие вопросы ЧПУ в ocStore 2.1.0.2.1 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha
arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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/ Может его создать? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя))Это catalog/controller/product/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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( Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 (изменено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Изменено 25 апреля 2016 пользователем arthyrgrex Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Общие вопросы ЧПУ в ocStore 2.1.0.2.1
arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 Сорян это вначале ошибся, а исправить низзя)) Это catalog/controller/product/ Вот только писал, что есть в product ) пробую ) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 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 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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( Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 (изменено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Изменено 25 апреля 2016 пользователем arthyrgrex Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу.
arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 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( Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
arthyrgrex Опубликовано: 25 апреля 2016 Автор Поделиться Опубликовано: 25 апреля 2016 (изменено) Попробовал изменить$this->data['breadcrumbs'][] = array(на$data['breadcrumbs'][] = array(Результат неоднозначный, но больше похож на правду )Работает - но немного криво:в Хлебных крошках дублируется предыдущая категория:http://modamio2.ru/trikotaj-dlya-devochek/ Изменено 25 апреля 2016 пользователем arthyrgrex Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
ocdev_pro Опубликовано: 25 апреля 2016 Поделиться Опубликовано: 25 апреля 2016 Попробовал изменить $this->data['breadcrumbs'][] = array( на $data['breadcrumbs'][] = array( Результат неоднозначный, но больше похож на правду ) Работает - но немного криво: в Хлебных крошках дублируется предыдущая категория: http://modamio2.ru/trikotaj-dlya-devochek/ Дайте фтп в ЛС гляну поправлю Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0
Рекомендованные сообщения