Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

ЧПУ в ocStore 2.1.0.2.1


Recommended Posts

Добрый день.

Домен:
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/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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.