Перейти к содержанию
arthyrgrex

ЧПУ в ocStore 2.1.0.2.1

Рекомендуемые сообщения

Добрый день.

Домен:
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

Заранее вам благодарен!
А то уже обыскался - все никак не найду решения..
 

Изменено пользователем arthyrgrex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

faede8a6cd.jpg

КЕП внимательно читайте чего просит Автор темы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читайте инструкцию по ссылке

Сначала выполняем действия из второго сообщения, а потом из первого!

У вас все получиться  :-)

Изменено пользователем Waha
  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

КЕП внимательно читайте чего просит Автор темы!

Блин, точно.

А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Блин, точно.

А с таким решением не будет неправильных хлебных крошек при входе в карточку из модулей?

Пример работающего сайта отправил в ЛС

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читайте инструкцию по ссылке

Сначала выполняем действия из второго сообщения, а потом из первого!

У вас все получиться  :-)

Блин, 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/

Может его создать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сорян это вначале ошибся, а исправить низзя))
Это catalog/controller/product/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сорян это вначале ошибся, а исправить низзя))

Это catalog/controller/product/

Вот только писал, что есть в product )

пробую )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Заходим в 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-х местах.

Изменено пользователем arthyrgrex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот мой /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));
}
}
}
}

Изменено пользователем arthyrgrex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот мой /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 было

 

Изменено пользователем Waha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После таких правок на странице товара все хорошо:
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(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал изменить
$this->data['breadcrumbs'][] = array(
на
$data['breadcrumbs'][] = array(

Результат неоднозначный, но больше похож на правду )
Работает - но немного криво:

в Хлебных крошках дублируется предыдущая категория:
http://modamio2.ru/trikotaj-dlya-devochek/

Изменено пользователем arthyrgrex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал изменить

$this->data['breadcrumbs'][] = array(

на

$data['breadcrumbs'][] = array(

Результат неоднозначный, но больше похож на правду )

Работает - но немного криво:

в Хлебных крошках дублируется предыдущая категория:

http://modamio2.ru/trikotaj-dlya-devochek/

 

Дайте фтп в ЛС гляну поправлю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.