Nameless Posted August 20, 2014 Share Posted August 20, 2014 а на версии 1.5.5.1.1 ктонибудь пропотому чтовал? у меня в /system/library/pagination.php за место if ($page > 1) { $output .= ' <a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a> <a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; } вот икой блок if ($page > 1) { $tmp_url = str_replace('&', '&', $this->url); $output .= ' <a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $this->text_first . '</a>'; if ($page == 2){ $output .= '<a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $this->text_prev . '</a> '; }else{ $output .= '<a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; } } Link to comment Share on other sites More sharing options... 1 month later... H3blade Posted October 10, 2014 Share Posted October 10, 2014 а на версии 1.5.5.1.1 ктонибудь пропотому чтовал? у меня в /system/library/pagination.php за место if ($page > 1) { $output .= ' <a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a> <a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; } вот икой блок if ($page > 1) { $tmp_url = str_replace('&', '&', $this->url); $output .= ' <a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $this->text_first . '</a>'; if ($page == 2){ $output .= '<a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $this->text_prev . '</a> '; }else{ $output .= '<a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; } } Решение никто не нашел?) Link to comment Share on other sites More sharing options... 4 months later... onnia Posted February 12, 2015 Share Posted February 12, 2015 Нашлось готовое решение для использования атрибутов rel="next" и rel="prev", решаюещёе проблему дублей страниц категории. Изменяется файл /system/library/pagination.php Это: public $style_results = 'results'; public function render() { ... } Заменить на: public $style_results = 'results'; public $next = null; public $prev = null; public function render() { ... } Это: if ($page > 1) { $output .= ' <a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a> <a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; } Заменить на: if ($page > 1) { $output .= ' <a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a> <a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; $this->prev = str_replace('{page}', $page - 1, $this->url); } Это: if ($page < $num_pages) { $output .= ' <a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a> <a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a> '; } Заменить на: if ($page < $num_pages) { $output .= ' <a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a> <a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a> '; $this->next = str_replace('{page}', $page + 1, $this->url); } И в конэто файла это: } } ?> Заменить на: } public function getNext() { return $this->next; } public function getPrev() { return $this->prev; } } ?> После чего во всех контроллерах вывода пагинации /catalog/controller/product/category.php, /catalog/controller/product/search.php, /catalog/controller/product/manufacturer.php, /catalog/controller/product/special.php Это: $this->data['pagination'] = $pagination->render(); Заменить на: $this->data['pagination'] = $pagination->render(); if ($pagination->getNext()) { $this->document->addLink($pagination->getNext(), 'next'); } if ($pagination->getPrev()) { $this->document->addLink($pagination->getPrev(), 'prev'); } В резульите, посмотрев код 2-й страницы категории (ну и всех других тоже), можно бугдет увигдеть в хед-секции нужные гуглу нам атрибуты: <link href="http://site.ru/category?page=3" rel="next" /> <link href="http://site.ru/category?page=1" rel="prev" /> Решение нашлось тут. Помогите, пожалуйси. Сгделала всё как выше, рилииет супер, только вот теперьь поиск пересил рилиить... Ругается ик /home/bh51164/public_html/vqmod/vqcache/vq2-catalog_controller_product_search.php on line 546 А по этому пути у меня вот что пишет <?php class ControllerProductSearch extends Controller { public function index() { $this->language->load('product/search'); $this->load->model('catalog/category'); # Filter start $this->load->model('catalog/filter'); # Filter end $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['filter_name'])) { $filter_name = $this->request->get['filter_name']; } else { $filter_name = ''; } if (isset($this->request->get['filter_tag'])) { $filter_tag = $this->request->get['filter_tag']; } elseif (isset($this->request->get['filter_name'])) { $filter_tag = $this->request->get['filter_name']; } else { $filter_tag = ''; } if (isset($this->request->get['filter_description'])) { $filter_description = $this->request->get['filter_description']; } else { $filter_description = ''; } if (isset($this->request->get['filter_category_id'])) { $filter_category_id = $this->request->get['filter_category_id']; } else { $filter_category_id = 0; } if (isset($this->request->get['filter_sub_category'])) { $filter_sub_category = $this->request->get['filter_sub_category']; } else { $filter_sub_category = ''; } 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 = $this->request->get['limit']; } else { $limit = $this->config->get('config_catalog_limit'); } if (isset($this->request->get['filter_name'])) { $this->document->setTitle($this->language->get('heading_title') . ' - ' . $this->request->get['filter_name']); } else { $this->document->setTitle($this->language->get('heading_title')); } $this->data['breadcrumbs'] = array(); $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home'), 'separator' => false ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } 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']; } $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('product/search', $url), 'separator' => $this->language->get('text_separator') ); if (isset($this->request->get['filter_name'])) { $this->data['heading_title'] = $this->language->get('heading_title') . ' - ' . $this->request->get['filter_name']; } else { $this->data['heading_title'] = $this->language->get('heading_title'); } $this->data['text_empty'] = $this->language->get('text_empty'); $this->data['text_critea'] = $this->language->get('text_critea'); $this->data['text_search'] = $this->language->get('text_search'); $this->data['text_keyword'] = $this->language->get('text_keyword'); $this->data['text_category'] = $this->language->get('text_category'); $this->data['text_sub_category'] = $this->language->get('text_sub_category'); $this->data['text_quantity'] = $this->language->get('text_quantity'); $this->data['text_manufacturer'] = $this->language->get('text_manufacturer'); $this->data['text_model'] = $this->language->get('text_model'); $this->data['text_price'] = $this->language->get('text_price'); $this->data['text_tax'] = $this->language->get('text_tax'); $this->data['text_points'] = $this->language->get('text_points'); $this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $this->data['text_display'] = $this->language->get('text_display'); $this->data['text_list'] = $this->language->get('text_list'); $this->data['text_grid'] = $this->language->get('text_grid'); $this->data['text_sort'] = $this->language->get('text_sort'); $this->data['text_limit'] = $this->language->get('text_limit'); $this->data['entry_search'] = $this->language->get('entry_search'); $this->data['entry_description'] = $this->language->get('entry_description'); $this->data['button_search'] = $this->language->get('button_search'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->data['button_wishlist'] = $this->language->get('button_wishlist'); $this->data['button_compare'] = $this->language->get('button_compare'); $this->data['compare'] = $this->url->link('product/compare'); $this->load->model('catalog/category'); // 3 Level Category Search $this->data['categories'] = array(); $categories_1 = $this->model_catalog_category->getCategories(0); foreach ($categories_1 as $category_1) { $level_2_data = array(); $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']); foreach ($categories_2 as $category_2) { $level_3_data = array(); $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']); foreach ($categories_3 as $category_3) { $level_3_data[] = array( 'category_id' => $category_3['category_id'], 'name' => $category_3['name'], ); } $level_2_data[] = array( 'category_id' => $category_2['category_id'], 'name' => $category_2['name'], 'children' => $level_3_data ); } $this->data['categories'][] = array( 'category_id' => $category_1['category_id'], 'name' => $category_1['name'], 'children' => $level_2_data ); } $this->data['products'] = array(); if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_tag'])) { $data = array( 'filter_name' => $filter_name, 'filter_tag' => $filter_tag, 'filter_description' => $filter_description, 'filter_category_id' => $filter_category_id, 'filter_sub_category' => $filter_sub_category, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($data); $results = $this->model_catalog_product->getProducts($data); # Filter start $filter_module = $this->config->get('filter_module'); if (isset($filter_module[0])) { $filter_settings = $filter_module[0]; $show_type = $filter_settings['pco_show_type']; $show_limit = (int)$filter_settings['pco_show_limit']; $products_id = array(); foreach ($results as $result) $products_id[] = (int)$result['product_id']; $product_options = array(); if ($products_id) { $filter_options = $this->model_catalog_filter->getOptionsByProductsId($products_id); foreach ($filter_options as $product_id => $options) { array_splice($options, $show_limit); foreach($options as $option) { if ($show_type == 'inline') { $product_options[$product_id][] = $option['name'] . ': <b>' . $option['values'] . '</b>'; } else { $product_options[$product_id][] = array( 'name' => $option['name'], 'values' => $option['values'] ); } } } } } # Filter end 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 = false; } 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; } # Filter start if ($show_type == 'inline') { if (isset($product_options[$result['product_id']])) { $attributes = implode(' / ', $product_options[$result['product_id']]); } else { $attributes = ''; } } else { if (isset($product_options[$result['product_id']])) { $attributes = $product_options[$result['product_id']]; } else { $attributes = array(); } } # Filter end $this->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, 100) . '..', # Filter start 'attributes' => $attributes, # Filter end 'price' => $price, 'special' => $special, 'upc' => $result['upc'], 'tax' => $tax, 'rating' => $result['rating'], 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', $url . '&product_id=' . $result['product_id']) ); } $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $this->data['sorts'] = array(); $this->data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/search', 'sort=p.sort_order&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/search', 'sort=p.price&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/search', 'sort=p.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/search', 'sort=rating&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/search', 'sort=rating&order=ASC' . $url) ); } $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/search', 'sort=p.model&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/search', 'sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $this->data['limits'] = array(); $this->data['limits'][] = array( 'text' => $this->config->get('config_catalog_limit'), 'value' => $this->config->get('config_catalog_limit'), 'href' => $this->url->link('product/search', $url . '&limit=' . $this->config->get('config_catalog_limit')) ); $this->data['limits'][] = array( 'text' => 25, 'value' => 25, 'href' => $this->url->link('product/search', $url . '&limit=25') ); $this->data['limits'][] = array( 'text' => 50, 'value' => 50, 'href' => $this->url->link('product/search', $url . '&limit=50') ); $this->data['limits'][] = array( 'text' => 75, 'value' => 75, 'href' => $this->url->link('product/search', $url . '&limit=75') ); $this->data['limits'][] = array( 'text' => 100, 'value' => 100, 'href' => $this->url->link('product/search', $url . '&limit=100') ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } 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->text = $this->language->get('text_pagination'); $pagination->url = $this->url->link('product/search', $url . '&page={page}'); $this->data['pagination'] = $pagination->render(); if ($pagination->getNext()) { $this->document->addLink($pagination->getNext(), 'next'); } if ($pagination->getPrev()) { $this->document->addLink($pagination->getPrev(), 'prev'); } $this->data['filter_name'] = $filter_name; $this->data['filter_description'] = $filter_description; $this->data['filter_category_id'] = $filter_category_id; $this->data['filter_sub_category'] = $filter_sub_category; $this->data['sort'] = $sort; $this->data['order'] = $order; $this->data['limit'] = $limit; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/search.tpl'; } else { $this->template = 'default/template/product/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> Link to comment Share on other sites More sharing options... 6 months later... vulpecula09 Posted September 7, 2015 Share Posted September 7, 2015 очень извиняюсь, после манипуляций выдает ошибку вверху страницы - неизвестная переменная на строках 28, 32,...,88 на страниэто pagination.php не поможете исправить? Link to comment Share on other sites More sharing options... vulpecula09 Posted September 7, 2015 Share Posted September 7, 2015 Помогите, пожалуйси. Сгделала всё как выше, рилииет супер, только вот теперьь поиск пересил рилиить... Ругается ик /home/bh51164/public_html/vqmod/vqcache/vq2-catalog_controller_product_search.php on line 546 А по этому пути у меня вот что пишет <?php class ControllerProductSearch extends Controller { public function index() { $this->language->load('product/search'); $this->load->model('catalog/category'); # Filter start $this->load->model('catalog/filter'); # Filter end $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['filter_name'])) { $filter_name = $this->request->get['filter_name']; } else { $filter_name = ''; } if (isset($this->request->get['filter_tag'])) { $filter_tag = $this->request->get['filter_tag']; } elseif (isset($this->request->get['filter_name'])) { $filter_tag = $this->request->get['filter_name']; } else { $filter_tag = ''; } if (isset($this->request->get['filter_description'])) { $filter_description = $this->request->get['filter_description']; } else { $filter_description = ''; } if (isset($this->request->get['filter_category_id'])) { $filter_category_id = $this->request->get['filter_category_id']; } else { $filter_category_id = 0; } if (isset($this->request->get['filter_sub_category'])) { $filter_sub_category = $this->request->get['filter_sub_category']; } else { $filter_sub_category = ''; } 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 = $this->request->get['limit']; } else { $limit = $this->config->get('config_catalog_limit'); } if (isset($this->request->get['filter_name'])) { $this->document->setTitle($this->language->get('heading_title') . ' - ' . $this->request->get['filter_name']); } else { $this->document->setTitle($this->language->get('heading_title')); } $this->data['breadcrumbs'] = array(); $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home'), 'separator' => false ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } 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']; } $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('product/search', $url), 'separator' => $this->language->get('text_separator') ); if (isset($this->request->get['filter_name'])) { $this->data['heading_title'] = $this->language->get('heading_title') . ' - ' . $this->request->get['filter_name']; } else { $this->data['heading_title'] = $this->language->get('heading_title'); } $this->data['text_empty'] = $this->language->get('text_empty'); $this->data['text_critea'] = $this->language->get('text_critea'); $this->data['text_search'] = $this->language->get('text_search'); $this->data['text_keyword'] = $this->language->get('text_keyword'); $this->data['text_category'] = $this->language->get('text_category'); $this->data['text_sub_category'] = $this->language->get('text_sub_category'); $this->data['text_quantity'] = $this->language->get('text_quantity'); $this->data['text_manufacturer'] = $this->language->get('text_manufacturer'); $this->data['text_model'] = $this->language->get('text_model'); $this->data['text_price'] = $this->language->get('text_price'); $this->data['text_tax'] = $this->language->get('text_tax'); $this->data['text_points'] = $this->language->get('text_points'); $this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $this->data['text_display'] = $this->language->get('text_display'); $this->data['text_list'] = $this->language->get('text_list'); $this->data['text_grid'] = $this->language->get('text_grid'); $this->data['text_sort'] = $this->language->get('text_sort'); $this->data['text_limit'] = $this->language->get('text_limit'); $this->data['entry_search'] = $this->language->get('entry_search'); $this->data['entry_description'] = $this->language->get('entry_description'); $this->data['button_search'] = $this->language->get('button_search'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->data['button_wishlist'] = $this->language->get('button_wishlist'); $this->data['button_compare'] = $this->language->get('button_compare'); $this->data['compare'] = $this->url->link('product/compare'); $this->load->model('catalog/category'); // 3 Level Category Search $this->data['categories'] = array(); $categories_1 = $this->model_catalog_category->getCategories(0); foreach ($categories_1 as $category_1) { $level_2_data = array(); $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']); foreach ($categories_2 as $category_2) { $level_3_data = array(); $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']); foreach ($categories_3 as $category_3) { $level_3_data[] = array( 'category_id' => $category_3['category_id'], 'name' => $category_3['name'], ); } $level_2_data[] = array( 'category_id' => $category_2['category_id'], 'name' => $category_2['name'], 'children' => $level_3_data ); } $this->data['categories'][] = array( 'category_id' => $category_1['category_id'], 'name' => $category_1['name'], 'children' => $level_2_data ); } $this->data['products'] = array(); if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_tag'])) { $data = array( 'filter_name' => $filter_name, 'filter_tag' => $filter_tag, 'filter_description' => $filter_description, 'filter_category_id' => $filter_category_id, 'filter_sub_category' => $filter_sub_category, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($data); $results = $this->model_catalog_product->getProducts($data); # Filter start $filter_module = $this->config->get('filter_module'); if (isset($filter_module[0])) { $filter_settings = $filter_module[0]; $show_type = $filter_settings['pco_show_type']; $show_limit = (int)$filter_settings['pco_show_limit']; $products_id = array(); foreach ($results as $result) $products_id[] = (int)$result['product_id']; $product_options = array(); if ($products_id) { $filter_options = $this->model_catalog_filter->getOptionsByProductsId($products_id); foreach ($filter_options as $product_id => $options) { array_splice($options, $show_limit); foreach($options as $option) { if ($show_type == 'inline') { $product_options[$product_id][] = $option['name'] . ': <b>' . $option['values'] . '</b>'; } else { $product_options[$product_id][] = array( 'name' => $option['name'], 'values' => $option['values'] ); } } } } } # Filter end 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 = false; } 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; } # Filter start if ($show_type == 'inline') { if (isset($product_options[$result['product_id']])) { $attributes = implode(' / ', $product_options[$result['product_id']]); } else { $attributes = ''; } } else { if (isset($product_options[$result['product_id']])) { $attributes = $product_options[$result['product_id']]; } else { $attributes = array(); } } # Filter end $this->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, 100) . '..', # Filter start 'attributes' => $attributes, # Filter end 'price' => $price, 'special' => $special, 'upc' => $result['upc'], 'tax' => $tax, 'rating' => $result['rating'], 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', $url . '&product_id=' . $result['product_id']) ); } $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $this->data['sorts'] = array(); $this->data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/search', 'sort=p.sort_order&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/search', 'sort=p.price&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/search', 'sort=p.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/search', 'sort=rating&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/search', 'sort=rating&order=ASC' . $url) ); } $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/search', 'sort=p.model&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/search', 'sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $this->data['limits'] = array(); $this->data['limits'][] = array( 'text' => $this->config->get('config_catalog_limit'), 'value' => $this->config->get('config_catalog_limit'), 'href' => $this->url->link('product/search', $url . '&limit=' . $this->config->get('config_catalog_limit')) ); $this->data['limits'][] = array( 'text' => 25, 'value' => 25, 'href' => $this->url->link('product/search', $url . '&limit=25') ); $this->data['limits'][] = array( 'text' => 50, 'value' => 50, 'href' => $this->url->link('product/search', $url . '&limit=50') ); $this->data['limits'][] = array( 'text' => 75, 'value' => 75, 'href' => $this->url->link('product/search', $url . '&limit=75') ); $this->data['limits'][] = array( 'text' => 100, 'value' => 100, 'href' => $this->url->link('product/search', $url . '&limit=100') ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } 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->text = $this->language->get('text_pagination'); $pagination->url = $this->url->link('product/search', $url . '&page={page}'); $this->data['pagination'] = $pagination->render(); if ($pagination->getNext()) { $this->document->addLink($pagination->getNext(), 'next'); } if ($pagination->getPrev()) { $this->document->addLink($pagination->getPrev(), 'prev'); } $this->data['filter_name'] = $filter_name; $this->data['filter_description'] = $filter_description; $this->data['filter_category_id'] = $filter_category_id; $this->data['filter_sub_category'] = $filter_sub_category; $this->data['sort'] = $sort; $this->data['order'] = $order; $this->data['limit'] = $limit; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/search.tpl'; } else { $this->template = 'default/template/product/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> очень извиняюсь, после манипуляций выдает ошибку вверху страницы - неизвестная переменная на строках 28, 32,...,88 на страниэто pagination.php не поможете исправить? Link to comment Share on other sites More sharing options... vulpecula09 Posted September 8, 2015 Share Posted September 8, 2015 вообещём теперьь все без ошипотому чток, но на OpenCart 1.5.6.4 это не рилииет Link to comment Share on other sites More sharing options... chukcha Posted September 8, 2015 Share Posted September 8, 2015 Зналит не все сгделали. Link to comment Share on other sites More sharing options... ocdev_pro Posted September 10, 2015 Share Posted September 10, 2015 Это реализуемо намного проещё и согласно рекомендациям ПС. Халява на SEO оптимизации коммерческих сайтов заканливается.Кума надо убрать: дубли из sitemap постраничной навигации категорий производителей убрать безсмысленный редирект со ссылок без слеша на слеш сгделать правильный robots и другие оптимизации Писать в личку Link to comment Share on other sites More sharing options... chukcha Posted September 10, 2015 Share Posted September 10, 2015 убрать безсмысленный редирект со ссылок без слеша на слеш с этого меси поподробней.. ... Кума? Link to comment Share on other sites More sharing options... 2 weeks later... ocdev_pro Posted September 21, 2015 Share Posted September 21, 2015 (edited) с этого меси поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть икая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, липотому что в шаблоне, липотому что в материалах, липотому что при помощи модулей меню сивят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я рилиию говорят надо фиксить это, ипотому что много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект этолесообразно применять при переадресации со сирой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Edited September 21, 2015 by Waha Link to comment Share on other sites More sharing options... 8 months later... mdgr Posted June 14, 2016 Share Posted June 14, 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайи в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообещёние Сайт выполнил переадресацию слишком много раз. При синдартном типе ЧПУ все нормально. Как это попотому чтороть? Link to comment Share on other sites More sharing options... 4 months later... Lili33 Posted October 15, 2016 Share Posted October 15, 2016 Пожалуйси подскажите что гделать, никак не найду решение. Вклюлила SeoPro и дубли то изчезли, но вот при перехогде на категории вот икая штука "Неверное перенаправление на страниэто". Link to comment Share on other sites More sharing options... Prev 9 10 11 12 13 14 Next Page 14 of 14 Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 0 Go to topic listing Similar Content Дубли страниц без SEO url и редиреки By StrikerXP, April 4 2 replies 101 views StrikerXP April 4 Удноние циклических ссылок By rwebook, January 16, 2020 удноние циклических ссылок циклические ссылки (and 2 more) Tagged with: удноние циклических ссылок циклические ссылки циклические ссылки 0 comments 1,761 views rwebook January 17, 2020 проблемы с дублями, много дублей By stopop, February 6 3 replies 226 views esculapra February 6 Блок ссылок для категории By SirGrey, July 9, 2020 категория тег ссылки (and 3 more) Tagged with: категория тег ссылки ссылка seo ссылки в категории 0 comments 2,419 views SirGrey July 9, 2020 full index [Подгдержка] [SEO] Full IndeX : Улучшение ингдексации и устранение ряда недочетов Opencart 1 2 3 4 81 By Otvet, August 17, 2015 продвижение пагинация (and 4 more) Tagged with: продвижение пагинация оптимизация страницы canonical noindex 2,002 replies 204,111 views linuxstomp February 15 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Реклама и продвижение SEO-вопросы (оптимизация и продвижение магазина) SEO-контент и устранение дублей ссылок Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
H3blade Posted October 10, 2014 Share Posted October 10, 2014 а на версии 1.5.5.1.1 ктонибудь пропотому чтовал? у меня в /system/library/pagination.php за место if ($page > 1) { $output .= ' <a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a> <a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; } вот икой блок if ($page > 1) { $tmp_url = str_replace('&', '&', $this->url); $output .= ' <a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $this->text_first . '</a>'; if ($page == 2){ $output .= '<a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $this->text_prev . '</a> '; }else{ $output .= '<a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; } } Решение никто не нашел?) Link to comment Share on other sites More sharing options...
onnia Posted February 12, 2015 Share Posted February 12, 2015 Нашлось готовое решение для использования атрибутов rel="next" и rel="prev", решаюещёе проблему дублей страниц категории. Изменяется файл /system/library/pagination.php Это: public $style_results = 'results'; public function render() { ... } Заменить на: public $style_results = 'results'; public $next = null; public $prev = null; public function render() { ... } Это: if ($page > 1) { $output .= ' <a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a> <a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; } Заменить на: if ($page > 1) { $output .= ' <a href="' . str_replace('{page}', 1, $this->url) . '">' . $this->text_first . '</a> <a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a> '; $this->prev = str_replace('{page}', $page - 1, $this->url); } Это: if ($page < $num_pages) { $output .= ' <a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a> <a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a> '; } Заменить на: if ($page < $num_pages) { $output .= ' <a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a> <a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a> '; $this->next = str_replace('{page}', $page + 1, $this->url); } И в конэто файла это: } } ?> Заменить на: } public function getNext() { return $this->next; } public function getPrev() { return $this->prev; } } ?> После чего во всех контроллерах вывода пагинации /catalog/controller/product/category.php, /catalog/controller/product/search.php, /catalog/controller/product/manufacturer.php, /catalog/controller/product/special.php Это: $this->data['pagination'] = $pagination->render(); Заменить на: $this->data['pagination'] = $pagination->render(); if ($pagination->getNext()) { $this->document->addLink($pagination->getNext(), 'next'); } if ($pagination->getPrev()) { $this->document->addLink($pagination->getPrev(), 'prev'); } В резульите, посмотрев код 2-й страницы категории (ну и всех других тоже), можно бугдет увигдеть в хед-секции нужные гуглу нам атрибуты: <link href="http://site.ru/category?page=3" rel="next" /> <link href="http://site.ru/category?page=1" rel="prev" /> Решение нашлось тут. Помогите, пожалуйси. Сгделала всё как выше, рилииет супер, только вот теперьь поиск пересил рилиить... Ругается ик /home/bh51164/public_html/vqmod/vqcache/vq2-catalog_controller_product_search.php on line 546 А по этому пути у меня вот что пишет <?php class ControllerProductSearch extends Controller { public function index() { $this->language->load('product/search'); $this->load->model('catalog/category'); # Filter start $this->load->model('catalog/filter'); # Filter end $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['filter_name'])) { $filter_name = $this->request->get['filter_name']; } else { $filter_name = ''; } if (isset($this->request->get['filter_tag'])) { $filter_tag = $this->request->get['filter_tag']; } elseif (isset($this->request->get['filter_name'])) { $filter_tag = $this->request->get['filter_name']; } else { $filter_tag = ''; } if (isset($this->request->get['filter_description'])) { $filter_description = $this->request->get['filter_description']; } else { $filter_description = ''; } if (isset($this->request->get['filter_category_id'])) { $filter_category_id = $this->request->get['filter_category_id']; } else { $filter_category_id = 0; } if (isset($this->request->get['filter_sub_category'])) { $filter_sub_category = $this->request->get['filter_sub_category']; } else { $filter_sub_category = ''; } 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 = $this->request->get['limit']; } else { $limit = $this->config->get('config_catalog_limit'); } if (isset($this->request->get['filter_name'])) { $this->document->setTitle($this->language->get('heading_title') . ' - ' . $this->request->get['filter_name']); } else { $this->document->setTitle($this->language->get('heading_title')); } $this->data['breadcrumbs'] = array(); $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home'), 'separator' => false ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } 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']; } $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('product/search', $url), 'separator' => $this->language->get('text_separator') ); if (isset($this->request->get['filter_name'])) { $this->data['heading_title'] = $this->language->get('heading_title') . ' - ' . $this->request->get['filter_name']; } else { $this->data['heading_title'] = $this->language->get('heading_title'); } $this->data['text_empty'] = $this->language->get('text_empty'); $this->data['text_critea'] = $this->language->get('text_critea'); $this->data['text_search'] = $this->language->get('text_search'); $this->data['text_keyword'] = $this->language->get('text_keyword'); $this->data['text_category'] = $this->language->get('text_category'); $this->data['text_sub_category'] = $this->language->get('text_sub_category'); $this->data['text_quantity'] = $this->language->get('text_quantity'); $this->data['text_manufacturer'] = $this->language->get('text_manufacturer'); $this->data['text_model'] = $this->language->get('text_model'); $this->data['text_price'] = $this->language->get('text_price'); $this->data['text_tax'] = $this->language->get('text_tax'); $this->data['text_points'] = $this->language->get('text_points'); $this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $this->data['text_display'] = $this->language->get('text_display'); $this->data['text_list'] = $this->language->get('text_list'); $this->data['text_grid'] = $this->language->get('text_grid'); $this->data['text_sort'] = $this->language->get('text_sort'); $this->data['text_limit'] = $this->language->get('text_limit'); $this->data['entry_search'] = $this->language->get('entry_search'); $this->data['entry_description'] = $this->language->get('entry_description'); $this->data['button_search'] = $this->language->get('button_search'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->data['button_wishlist'] = $this->language->get('button_wishlist'); $this->data['button_compare'] = $this->language->get('button_compare'); $this->data['compare'] = $this->url->link('product/compare'); $this->load->model('catalog/category'); // 3 Level Category Search $this->data['categories'] = array(); $categories_1 = $this->model_catalog_category->getCategories(0); foreach ($categories_1 as $category_1) { $level_2_data = array(); $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']); foreach ($categories_2 as $category_2) { $level_3_data = array(); $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']); foreach ($categories_3 as $category_3) { $level_3_data[] = array( 'category_id' => $category_3['category_id'], 'name' => $category_3['name'], ); } $level_2_data[] = array( 'category_id' => $category_2['category_id'], 'name' => $category_2['name'], 'children' => $level_3_data ); } $this->data['categories'][] = array( 'category_id' => $category_1['category_id'], 'name' => $category_1['name'], 'children' => $level_2_data ); } $this->data['products'] = array(); if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_tag'])) { $data = array( 'filter_name' => $filter_name, 'filter_tag' => $filter_tag, 'filter_description' => $filter_description, 'filter_category_id' => $filter_category_id, 'filter_sub_category' => $filter_sub_category, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($data); $results = $this->model_catalog_product->getProducts($data); # Filter start $filter_module = $this->config->get('filter_module'); if (isset($filter_module[0])) { $filter_settings = $filter_module[0]; $show_type = $filter_settings['pco_show_type']; $show_limit = (int)$filter_settings['pco_show_limit']; $products_id = array(); foreach ($results as $result) $products_id[] = (int)$result['product_id']; $product_options = array(); if ($products_id) { $filter_options = $this->model_catalog_filter->getOptionsByProductsId($products_id); foreach ($filter_options as $product_id => $options) { array_splice($options, $show_limit); foreach($options as $option) { if ($show_type == 'inline') { $product_options[$product_id][] = $option['name'] . ': <b>' . $option['values'] . '</b>'; } else { $product_options[$product_id][] = array( 'name' => $option['name'], 'values' => $option['values'] ); } } } } } # Filter end 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 = false; } 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; } # Filter start if ($show_type == 'inline') { if (isset($product_options[$result['product_id']])) { $attributes = implode(' / ', $product_options[$result['product_id']]); } else { $attributes = ''; } } else { if (isset($product_options[$result['product_id']])) { $attributes = $product_options[$result['product_id']]; } else { $attributes = array(); } } # Filter end $this->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, 100) . '..', # Filter start 'attributes' => $attributes, # Filter end 'price' => $price, 'special' => $special, 'upc' => $result['upc'], 'tax' => $tax, 'rating' => $result['rating'], 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', $url . '&product_id=' . $result['product_id']) ); } $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $this->data['sorts'] = array(); $this->data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/search', 'sort=p.sort_order&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/search', 'sort=p.price&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/search', 'sort=p.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/search', 'sort=rating&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/search', 'sort=rating&order=ASC' . $url) ); } $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/search', 'sort=p.model&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/search', 'sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $this->data['limits'] = array(); $this->data['limits'][] = array( 'text' => $this->config->get('config_catalog_limit'), 'value' => $this->config->get('config_catalog_limit'), 'href' => $this->url->link('product/search', $url . '&limit=' . $this->config->get('config_catalog_limit')) ); $this->data['limits'][] = array( 'text' => 25, 'value' => 25, 'href' => $this->url->link('product/search', $url . '&limit=25') ); $this->data['limits'][] = array( 'text' => 50, 'value' => 50, 'href' => $this->url->link('product/search', $url . '&limit=50') ); $this->data['limits'][] = array( 'text' => 75, 'value' => 75, 'href' => $this->url->link('product/search', $url . '&limit=75') ); $this->data['limits'][] = array( 'text' => 100, 'value' => 100, 'href' => $this->url->link('product/search', $url . '&limit=100') ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } 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->text = $this->language->get('text_pagination'); $pagination->url = $this->url->link('product/search', $url . '&page={page}'); $this->data['pagination'] = $pagination->render(); if ($pagination->getNext()) { $this->document->addLink($pagination->getNext(), 'next'); } if ($pagination->getPrev()) { $this->document->addLink($pagination->getPrev(), 'prev'); } $this->data['filter_name'] = $filter_name; $this->data['filter_description'] = $filter_description; $this->data['filter_category_id'] = $filter_category_id; $this->data['filter_sub_category'] = $filter_sub_category; $this->data['sort'] = $sort; $this->data['order'] = $order; $this->data['limit'] = $limit; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/search.tpl'; } else { $this->template = 'default/template/product/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> Link to comment Share on other sites More sharing options...
vulpecula09 Posted September 7, 2015 Share Posted September 7, 2015 очень извиняюсь, после манипуляций выдает ошибку вверху страницы - неизвестная переменная на строках 28, 32,...,88 на страниэто pagination.php не поможете исправить? Link to comment Share on other sites More sharing options...
vulpecula09 Posted September 7, 2015 Share Posted September 7, 2015 Помогите, пожалуйси. Сгделала всё как выше, рилииет супер, только вот теперьь поиск пересил рилиить... Ругается ик /home/bh51164/public_html/vqmod/vqcache/vq2-catalog_controller_product_search.php on line 546 А по этому пути у меня вот что пишет <?php class ControllerProductSearch extends Controller { public function index() { $this->language->load('product/search'); $this->load->model('catalog/category'); # Filter start $this->load->model('catalog/filter'); # Filter end $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['filter_name'])) { $filter_name = $this->request->get['filter_name']; } else { $filter_name = ''; } if (isset($this->request->get['filter_tag'])) { $filter_tag = $this->request->get['filter_tag']; } elseif (isset($this->request->get['filter_name'])) { $filter_tag = $this->request->get['filter_name']; } else { $filter_tag = ''; } if (isset($this->request->get['filter_description'])) { $filter_description = $this->request->get['filter_description']; } else { $filter_description = ''; } if (isset($this->request->get['filter_category_id'])) { $filter_category_id = $this->request->get['filter_category_id']; } else { $filter_category_id = 0; } if (isset($this->request->get['filter_sub_category'])) { $filter_sub_category = $this->request->get['filter_sub_category']; } else { $filter_sub_category = ''; } 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 = $this->request->get['limit']; } else { $limit = $this->config->get('config_catalog_limit'); } if (isset($this->request->get['filter_name'])) { $this->document->setTitle($this->language->get('heading_title') . ' - ' . $this->request->get['filter_name']); } else { $this->document->setTitle($this->language->get('heading_title')); } $this->data['breadcrumbs'] = array(); $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home'), 'separator' => false ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } 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']; } $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('product/search', $url), 'separator' => $this->language->get('text_separator') ); if (isset($this->request->get['filter_name'])) { $this->data['heading_title'] = $this->language->get('heading_title') . ' - ' . $this->request->get['filter_name']; } else { $this->data['heading_title'] = $this->language->get('heading_title'); } $this->data['text_empty'] = $this->language->get('text_empty'); $this->data['text_critea'] = $this->language->get('text_critea'); $this->data['text_search'] = $this->language->get('text_search'); $this->data['text_keyword'] = $this->language->get('text_keyword'); $this->data['text_category'] = $this->language->get('text_category'); $this->data['text_sub_category'] = $this->language->get('text_sub_category'); $this->data['text_quantity'] = $this->language->get('text_quantity'); $this->data['text_manufacturer'] = $this->language->get('text_manufacturer'); $this->data['text_model'] = $this->language->get('text_model'); $this->data['text_price'] = $this->language->get('text_price'); $this->data['text_tax'] = $this->language->get('text_tax'); $this->data['text_points'] = $this->language->get('text_points'); $this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $this->data['text_display'] = $this->language->get('text_display'); $this->data['text_list'] = $this->language->get('text_list'); $this->data['text_grid'] = $this->language->get('text_grid'); $this->data['text_sort'] = $this->language->get('text_sort'); $this->data['text_limit'] = $this->language->get('text_limit'); $this->data['entry_search'] = $this->language->get('entry_search'); $this->data['entry_description'] = $this->language->get('entry_description'); $this->data['button_search'] = $this->language->get('button_search'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->data['button_wishlist'] = $this->language->get('button_wishlist'); $this->data['button_compare'] = $this->language->get('button_compare'); $this->data['compare'] = $this->url->link('product/compare'); $this->load->model('catalog/category'); // 3 Level Category Search $this->data['categories'] = array(); $categories_1 = $this->model_catalog_category->getCategories(0); foreach ($categories_1 as $category_1) { $level_2_data = array(); $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']); foreach ($categories_2 as $category_2) { $level_3_data = array(); $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']); foreach ($categories_3 as $category_3) { $level_3_data[] = array( 'category_id' => $category_3['category_id'], 'name' => $category_3['name'], ); } $level_2_data[] = array( 'category_id' => $category_2['category_id'], 'name' => $category_2['name'], 'children' => $level_3_data ); } $this->data['categories'][] = array( 'category_id' => $category_1['category_id'], 'name' => $category_1['name'], 'children' => $level_2_data ); } $this->data['products'] = array(); if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_tag'])) { $data = array( 'filter_name' => $filter_name, 'filter_tag' => $filter_tag, 'filter_description' => $filter_description, 'filter_category_id' => $filter_category_id, 'filter_sub_category' => $filter_sub_category, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($data); $results = $this->model_catalog_product->getProducts($data); # Filter start $filter_module = $this->config->get('filter_module'); if (isset($filter_module[0])) { $filter_settings = $filter_module[0]; $show_type = $filter_settings['pco_show_type']; $show_limit = (int)$filter_settings['pco_show_limit']; $products_id = array(); foreach ($results as $result) $products_id[] = (int)$result['product_id']; $product_options = array(); if ($products_id) { $filter_options = $this->model_catalog_filter->getOptionsByProductsId($products_id); foreach ($filter_options as $product_id => $options) { array_splice($options, $show_limit); foreach($options as $option) { if ($show_type == 'inline') { $product_options[$product_id][] = $option['name'] . ': <b>' . $option['values'] . '</b>'; } else { $product_options[$product_id][] = array( 'name' => $option['name'], 'values' => $option['values'] ); } } } } } # Filter end 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 = false; } 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; } # Filter start if ($show_type == 'inline') { if (isset($product_options[$result['product_id']])) { $attributes = implode(' / ', $product_options[$result['product_id']]); } else { $attributes = ''; } } else { if (isset($product_options[$result['product_id']])) { $attributes = $product_options[$result['product_id']]; } else { $attributes = array(); } } # Filter end $this->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, 100) . '..', # Filter start 'attributes' => $attributes, # Filter end 'price' => $price, 'special' => $special, 'upc' => $result['upc'], 'tax' => $tax, 'rating' => $result['rating'], 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', $url . '&product_id=' . $result['product_id']) ); } $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $this->data['sorts'] = array(); $this->data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/search', 'sort=p.sort_order&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/search', 'sort=p.price&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/search', 'sort=p.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/search', 'sort=rating&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/search', 'sort=rating&order=ASC' . $url) ); } $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/search', 'sort=p.model&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/search', 'sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $this->data['limits'] = array(); $this->data['limits'][] = array( 'text' => $this->config->get('config_catalog_limit'), 'value' => $this->config->get('config_catalog_limit'), 'href' => $this->url->link('product/search', $url . '&limit=' . $this->config->get('config_catalog_limit')) ); $this->data['limits'][] = array( 'text' => 25, 'value' => 25, 'href' => $this->url->link('product/search', $url . '&limit=25') ); $this->data['limits'][] = array( 'text' => 50, 'value' => 50, 'href' => $this->url->link('product/search', $url . '&limit=50') ); $this->data['limits'][] = array( 'text' => 75, 'value' => 75, 'href' => $this->url->link('product/search', $url . '&limit=75') ); $this->data['limits'][] = array( 'text' => 100, 'value' => 100, 'href' => $this->url->link('product/search', $url . '&limit=100') ); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_tag'])) { $url .= '&filter_tag=' . urlencode(html_entity_decode($this->request->get['filter_tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_description'])) { $url .= '&filter_description=' . $this->request->get['filter_description']; } if (isset($this->request->get['filter_category_id'])) { $url .= '&filter_category_id=' . $this->request->get['filter_category_id']; } if (isset($this->request->get['filter_sub_category'])) { $url .= '&filter_sub_category=' . $this->request->get['filter_sub_category']; } 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->text = $this->language->get('text_pagination'); $pagination->url = $this->url->link('product/search', $url . '&page={page}'); $this->data['pagination'] = $pagination->render(); if ($pagination->getNext()) { $this->document->addLink($pagination->getNext(), 'next'); } if ($pagination->getPrev()) { $this->document->addLink($pagination->getPrev(), 'prev'); } $this->data['filter_name'] = $filter_name; $this->data['filter_description'] = $filter_description; $this->data['filter_category_id'] = $filter_category_id; $this->data['filter_sub_category'] = $filter_sub_category; $this->data['sort'] = $sort; $this->data['order'] = $order; $this->data['limit'] = $limit; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/search.tpl'; } else { $this->template = 'default/template/product/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> очень извиняюсь, после манипуляций выдает ошибку вверху страницы - неизвестная переменная на строках 28, 32,...,88 на страниэто pagination.php не поможете исправить? Link to comment Share on other sites More sharing options...
vulpecula09 Posted September 8, 2015 Share Posted September 8, 2015 вообещём теперьь все без ошипотому чток, но на OpenCart 1.5.6.4 это не рилииет Link to comment Share on other sites More sharing options...
chukcha Posted September 8, 2015 Share Posted September 8, 2015 Зналит не все сгделали. Link to comment Share on other sites More sharing options... ocdev_pro Posted September 10, 2015 Share Posted September 10, 2015 Это реализуемо намного проещё и согласно рекомендациям ПС. Халява на SEO оптимизации коммерческих сайтов заканливается.Кума надо убрать: дубли из sitemap постраничной навигации категорий производителей убрать безсмысленный редирект со ссылок без слеша на слеш сгделать правильный robots и другие оптимизации Писать в личку Link to comment Share on other sites More sharing options... chukcha Posted September 10, 2015 Share Posted September 10, 2015 убрать безсмысленный редирект со ссылок без слеша на слеш с этого меси поподробней.. ... Кума? Link to comment Share on other sites More sharing options... 2 weeks later... ocdev_pro Posted September 21, 2015 Share Posted September 21, 2015 (edited) с этого меси поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть икая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, липотому что в шаблоне, липотому что в материалах, липотому что при помощи модулей меню сивят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я рилиию говорят надо фиксить это, ипотому что много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект этолесообразно применять при переадресации со сирой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Edited September 21, 2015 by Waha Link to comment Share on other sites More sharing options... 8 months later... mdgr Posted June 14, 2016 Share Posted June 14, 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайи в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообещёние Сайт выполнил переадресацию слишком много раз. При синдартном типе ЧПУ все нормально. Как это попотому чтороть? Link to comment Share on other sites More sharing options... 4 months later... Lili33 Posted October 15, 2016 Share Posted October 15, 2016 Пожалуйси подскажите что гделать, никак не найду решение. Вклюлила SeoPro и дубли то изчезли, но вот при перехогде на категории вот икая штука "Неверное перенаправление на страниэто". Link to comment Share on other sites More sharing options... Prev 9 10 11 12 13 14 Next Page 14 of 14 Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 0 Go to topic listing Similar Content Дубли страниц без SEO url и редиреки By StrikerXP, April 4 2 replies 101 views StrikerXP April 4 Удноние циклических ссылок By rwebook, January 16, 2020 удноние циклических ссылок циклические ссылки (and 2 more) Tagged with: удноние циклических ссылок циклические ссылки циклические ссылки 0 comments 1,761 views rwebook January 17, 2020 проблемы с дублями, много дублей By stopop, February 6 3 replies 226 views esculapra February 6 Блок ссылок для категории By SirGrey, July 9, 2020 категория тег ссылки (and 3 more) Tagged with: категория тег ссылки ссылка seo ссылки в категории 0 comments 2,419 views SirGrey July 9, 2020 full index [Подгдержка] [SEO] Full IndeX : Улучшение ингдексации и устранение ряда недочетов Opencart 1 2 3 4 81 By Otvet, August 17, 2015 продвижение пагинация (and 4 more) Tagged with: продвижение пагинация оптимизация страницы canonical noindex 2,002 replies 204,111 views linuxstomp February 15 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Реклама и продвижение SEO-вопросы (оптимизация и продвижение магазина) SEO-контент и устранение дублей ссылок Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue
ocdev_pro Posted September 10, 2015 Share Posted September 10, 2015 Это реализуемо намного проещё и согласно рекомендациям ПС. Халява на SEO оптимизации коммерческих сайтов заканливается.Кума надо убрать: дубли из sitemap постраничной навигации категорий производителей убрать безсмысленный редирект со ссылок без слеша на слеш сгделать правильный robots и другие оптимизации Писать в личку Link to comment Share on other sites More sharing options... chukcha Posted September 10, 2015 Share Posted September 10, 2015 убрать безсмысленный редирект со ссылок без слеша на слеш с этого меси поподробней.. ... Кума? Link to comment Share on other sites More sharing options... 2 weeks later... ocdev_pro Posted September 21, 2015 Share Posted September 21, 2015 (edited) с этого меси поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть икая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, липотому что в шаблоне, липотому что в материалах, липотому что при помощи модулей меню сивят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я рилиию говорят надо фиксить это, ипотому что много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект этолесообразно применять при переадресации со сирой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Edited September 21, 2015 by Waha Link to comment Share on other sites More sharing options... 8 months later... mdgr Posted June 14, 2016 Share Posted June 14, 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайи в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообещёние Сайт выполнил переадресацию слишком много раз. При синдартном типе ЧПУ все нормально. Как это попотому чтороть? Link to comment Share on other sites More sharing options... 4 months later... Lili33 Posted October 15, 2016 Share Posted October 15, 2016 Пожалуйси подскажите что гделать, никак не найду решение. Вклюлила SeoPro и дубли то изчезли, но вот при перехогде на категории вот икая штука "Неверное перенаправление на страниэто". Link to comment Share on other sites More sharing options... Prev 9 10 11 12 13 14 Next Page 14 of 14 Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 0 Go to topic listing Similar Content Дубли страниц без SEO url и редиреки By StrikerXP, April 4 2 replies 101 views StrikerXP April 4 Удноние циклических ссылок By rwebook, January 16, 2020 удноние циклических ссылок циклические ссылки (and 2 more) Tagged with: удноние циклических ссылок циклические ссылки циклические ссылки 0 comments 1,761 views rwebook January 17, 2020 проблемы с дублями, много дублей By stopop, February 6 3 replies 226 views esculapra February 6 Блок ссылок для категории By SirGrey, July 9, 2020 категория тег ссылки (and 3 more) Tagged with: категория тег ссылки ссылка seo ссылки в категории 0 comments 2,419 views SirGrey July 9, 2020 full index [Подгдержка] [SEO] Full IndeX : Улучшение ингдексации и устранение ряда недочетов Opencart 1 2 3 4 81 By Otvet, August 17, 2015 продвижение пагинация (and 4 more) Tagged with: продвижение пагинация оптимизация страницы canonical noindex 2,002 replies 204,111 views linuxstomp February 15 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Реклама и продвижение SEO-вопросы (оптимизация и продвижение магазина) SEO-контент и устранение дублей ссылок
chukcha Posted September 10, 2015 Share Posted September 10, 2015 убрать безсмысленный редирект со ссылок без слеша на слеш с этого меси поподробней.. ... Кума? Link to comment Share on other sites More sharing options... 2 weeks later... ocdev_pro Posted September 21, 2015 Share Posted September 21, 2015 (edited) с этого меси поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть икая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, липотому что в шаблоне, липотому что в материалах, липотому что при помощи модулей меню сивят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я рилиию говорят надо фиксить это, ипотому что много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект этолесообразно применять при переадресации со сирой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Edited September 21, 2015 by Waha Link to comment Share on other sites More sharing options... 8 months later... mdgr Posted June 14, 2016 Share Posted June 14, 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайи в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообещёние Сайт выполнил переадресацию слишком много раз. При синдартном типе ЧПУ все нормально. Как это попотому чтороть? Link to comment Share on other sites More sharing options... 4 months later... Lili33 Posted October 15, 2016 Share Posted October 15, 2016 Пожалуйси подскажите что гделать, никак не найду решение. Вклюлила SeoPro и дубли то изчезли, но вот при перехогде на категории вот икая штука "Неверное перенаправление на страниэто". Link to comment Share on other sites More sharing options... Prev 9 10 11 12 13 14 Next Page 14 of 14 Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 0 Go to topic listing Similar Content Дубли страниц без SEO url и редиреки By StrikerXP, April 4 2 replies 101 views StrikerXP April 4 Удноние циклических ссылок By rwebook, January 16, 2020 удноние циклических ссылок циклические ссылки (and 2 more) Tagged with: удноние циклических ссылок циклические ссылки циклические ссылки 0 comments 1,761 views rwebook January 17, 2020 проблемы с дублями, много дублей By stopop, February 6 3 replies 226 views esculapra February 6 Блок ссылок для категории By SirGrey, July 9, 2020 категория тег ссылки (and 3 more) Tagged with: категория тег ссылки ссылка seo ссылки в категории 0 comments 2,419 views SirGrey July 9, 2020 full index [Подгдержка] [SEO] Full IndeX : Улучшение ингдексации и устранение ряда недочетов Opencart 1 2 3 4 81 By Otvet, August 17, 2015 продвижение пагинация (and 4 more) Tagged with: продвижение пагинация оптимизация страницы canonical noindex 2,002 replies 204,111 views linuxstomp February 15 Recently Browsing 0 members No registered users viewing this page.
ocdev_pro Posted September 21, 2015 Share Posted September 21, 2015 (edited) с этого меси поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть икая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, липотому что в шаблоне, липотому что в материалах, липотому что при помощи модулей меню сивят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я рилиию говорят надо фиксить это, ипотому что много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект этолесообразно применять при переадресации со сирой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Edited September 21, 2015 by Waha Link to comment Share on other sites More sharing options... 8 months later... mdgr Posted June 14, 2016 Share Posted June 14, 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайи в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообещёние Сайт выполнил переадресацию слишком много раз. При синдартном типе ЧПУ все нормально. Как это попотому чтороть? Link to comment Share on other sites More sharing options... 4 months later... Lili33 Posted October 15, 2016 Share Posted October 15, 2016 Пожалуйси подскажите что гделать, никак не найду решение. Вклюлила SeoPro и дубли то изчезли, но вот при перехогде на категории вот икая штука "Неверное перенаправление на страниэто". Link to comment Share on other sites More sharing options... Prev 9 10 11 12 13 14 Next Page 14 of 14 Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 0
mdgr Posted June 14, 2016 Share Posted June 14, 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайи в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообещёние Сайт выполнил переадресацию слишком много раз. При синдартном типе ЧПУ все нормально. Как это попотому чтороть? Link to comment Share on other sites More sharing options...
Lili33 Posted October 15, 2016 Share Posted October 15, 2016 Пожалуйси подскажите что гделать, никак не найду решение. Вклюлила SeoPro и дубли то изчезли, но вот при перехогде на категории вот икая штука "Неверное перенаправление на страниэто". Link to comment Share on other sites More sharing options...
Recommended Posts