Nameless Опубліковано: 20 серпня 2014 Share Опубліковано: 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> '; } } Надіслати Поділитися на інших сайтах More sharing options... 1 month later... H3blade Опубліковано: 10 жовтня 2014 Share Опубліковано: 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> '; } } Решение никто не нашел?) Надіслати Поділитися на інших сайтах More sharing options... 4 months later... onnia Опубліковано: 12 лютого 2015 Share Опубліковано: 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()); } } ?> Надіслати Поділитися на інших сайтах More sharing options... 6 months later... vulpecula09 Опубліковано: 7 вересня 2015 Share Опубліковано: 7 вересня 2015 очень извиняюсь, после манипуляций выдает ошибку вверху страницы - неизвестная переменная на строках 28, 32,...,88 на странице pagination.php не поможете исправить? Надіслати Поділитися на інших сайтах More sharing options... vulpecula09 Опубліковано: 7 вересня 2015 Share Опубліковано: 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 не поможете исправить? Надіслати Поділитися на інших сайтах More sharing options... vulpecula09 Опубліковано: 8 вересня 2015 Share Опубліковано: 8 вересня 2015 вообщем теперь все без ошибок, но на OpenCart 1.5.6.4 это не работает Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 8 вересня 2015 Share Опубліковано: 8 вересня 2015 Значит не все сделали. Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 10 вересня 2015 Share Опубліковано: 10 вересня 2015 Это реализуемо намного проще и согласно рекомендациям ПС. Халява на SEO оптимизации коммерческих сайтов заканчивается.Кума надо убрать: дубли из sitemap постраничной навигации категорий производителей убрать безсмысленный редирект со ссылок без слеша на слеш сделать правильный robots и другие оптимизации Писать в личку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 10 вересня 2015 Share Опубліковано: 10 вересня 2015 убрать безсмысленный редирект со ссылок без слеша на слеш с этого места поподробней.. ... Кума? Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... ocdev_pro Опубліковано: 21 вересня 2015 Share Опубліковано: 21 вересня 2015 (змінено) с этого места поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть такая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, либо в шаблоне, либо в материалах, либо при помощи модулей меню ставят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я работаю говорят надо фиксить это, ибо много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект целесообразно применять при переадресации со старой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Змінено 21 вересня 2015 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... 8 months later... mdgr Опубліковано: 14 червня 2016 Share Опубліковано: 14 червня 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайта в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообщение Сайт выполнил переадресацию слишком много раз. При стандартном типе ЧПУ все нормально. Как это побороть? Надіслати Поділитися на інших сайтах More sharing options... 4 months later... Lili33 Опубліковано: 15 жовтня 2016 Share Опубліковано: 15 жовтня 2016 Пожалуйста подскажите что делать, никак не найду решение. Включила SeoPro и дубли то изчезли, но вот при переходе на категории вот такая штука "Неверное перенаправление на странице". Надіслати Поділитися на інших сайтах More sharing options... Назад 9 10 11 12 13 14 Вперед Сторінка 14 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) SEO-контент и устранение дублей ссылок Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
H3blade Опубліковано: 10 жовтня 2014 Share Опубліковано: 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> '; } } Решение никто не нашел?) Надіслати Поділитися на інших сайтах More sharing options...
onnia Опубліковано: 12 лютого 2015 Share Опубліковано: 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()); } } ?> Надіслати Поділитися на інших сайтах More sharing options...
vulpecula09 Опубліковано: 7 вересня 2015 Share Опубліковано: 7 вересня 2015 очень извиняюсь, после манипуляций выдает ошибку вверху страницы - неизвестная переменная на строках 28, 32,...,88 на странице pagination.php не поможете исправить? Надіслати Поділитися на інших сайтах More sharing options...
vulpecula09 Опубліковано: 7 вересня 2015 Share Опубліковано: 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 не поможете исправить? Надіслати Поділитися на інших сайтах More sharing options...
vulpecula09 Опубліковано: 8 вересня 2015 Share Опубліковано: 8 вересня 2015 вообщем теперь все без ошибок, но на OpenCart 1.5.6.4 это не работает Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 8 вересня 2015 Share Опубліковано: 8 вересня 2015 Значит не все сделали. Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 10 вересня 2015 Share Опубліковано: 10 вересня 2015 Это реализуемо намного проще и согласно рекомендациям ПС. Халява на SEO оптимизации коммерческих сайтов заканчивается.Кума надо убрать: дубли из sitemap постраничной навигации категорий производителей убрать безсмысленный редирект со ссылок без слеша на слеш сделать правильный robots и другие оптимизации Писать в личку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 10 вересня 2015 Share Опубліковано: 10 вересня 2015 убрать безсмысленный редирект со ссылок без слеша на слеш с этого места поподробней.. ... Кума? Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... ocdev_pro Опубліковано: 21 вересня 2015 Share Опубліковано: 21 вересня 2015 (змінено) с этого места поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть такая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, либо в шаблоне, либо в материалах, либо при помощи модулей меню ставят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я работаю говорят надо фиксить это, ибо много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект целесообразно применять при переадресации со старой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Змінено 21 вересня 2015 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... 8 months later... mdgr Опубліковано: 14 червня 2016 Share Опубліковано: 14 червня 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайта в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообщение Сайт выполнил переадресацию слишком много раз. При стандартном типе ЧПУ все нормально. Как это побороть? Надіслати Поділитися на інших сайтах More sharing options... 4 months later... Lili33 Опубліковано: 15 жовтня 2016 Share Опубліковано: 15 жовтня 2016 Пожалуйста подскажите что делать, никак не найду решение. Включила SeoPro и дубли то изчезли, но вот при переходе на категории вот такая штука "Неверное перенаправление на странице". Надіслати Поділитися на інших сайтах More sharing options... Назад 9 10 11 12 13 14 Вперед Сторінка 14 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) SEO-контент и устранение дублей ссылок Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
ocdev_pro Опубліковано: 10 вересня 2015 Share Опубліковано: 10 вересня 2015 Это реализуемо намного проще и согласно рекомендациям ПС. Халява на SEO оптимизации коммерческих сайтов заканчивается.Кума надо убрать: дубли из sitemap постраничной навигации категорий производителей убрать безсмысленный редирект со ссылок без слеша на слеш сделать правильный robots и другие оптимизации Писать в личку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 10 вересня 2015 Share Опубліковано: 10 вересня 2015 убрать безсмысленный редирект со ссылок без слеша на слеш с этого места поподробней.. ... Кума? Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... ocdev_pro Опубліковано: 21 вересня 2015 Share Опубліковано: 21 вересня 2015 (змінено) с этого места поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть такая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, либо в шаблоне, либо в материалах, либо при помощи модулей меню ставят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я работаю говорят надо фиксить это, ибо много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект целесообразно применять при переадресации со старой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Змінено 21 вересня 2015 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... 8 months later... mdgr Опубліковано: 14 червня 2016 Share Опубліковано: 14 червня 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайта в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообщение Сайт выполнил переадресацию слишком много раз. При стандартном типе ЧПУ все нормально. Как это побороть? Надіслати Поділитися на інших сайтах More sharing options... 4 months later... Lili33 Опубліковано: 15 жовтня 2016 Share Опубліковано: 15 жовтня 2016 Пожалуйста подскажите что делать, никак не найду решение. Включила SeoPro и дубли то изчезли, но вот при переходе на категории вот такая штука "Неверное перенаправление на странице". Надіслати Поділитися на інших сайтах More sharing options... Назад 9 10 11 12 13 14 Вперед Сторінка 14 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) SEO-контент и устранение дублей ссылок
chukcha Опубліковано: 10 вересня 2015 Share Опубліковано: 10 вересня 2015 убрать безсмысленный редирект со ссылок без слеша на слеш с этого места поподробней.. ... Кума? Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... ocdev_pro Опубліковано: 21 вересня 2015 Share Опубліковано: 21 вересня 2015 (змінено) с этого места поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть такая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, либо в шаблоне, либо в материалах, либо при помощи модулей меню ставят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я работаю говорят надо фиксить это, ибо много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект целесообразно применять при переадресации со старой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Змінено 21 вересня 2015 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... 8 months later... mdgr Опубліковано: 14 червня 2016 Share Опубліковано: 14 червня 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайта в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообщение Сайт выполнил переадресацию слишком много раз. При стандартном типе ЧПУ все нормально. Как это побороть? Надіслати Поділитися на інших сайтах More sharing options... 4 months later... Lili33 Опубліковано: 15 жовтня 2016 Share Опубліковано: 15 жовтня 2016 Пожалуйста подскажите что делать, никак не найду решение. Включила SeoPro и дубли то изчезли, но вот при переходе на категории вот такая штука "Неверное перенаправление на странице". Надіслати Поділитися на інших сайтах More sharing options... Назад 9 10 11 12 13 14 Вперед Сторінка 14 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
ocdev_pro Опубліковано: 21 вересня 2015 Share Опубліковано: 21 вересня 2015 (змінено) с этого места поподробней.. ... Кума? Очепятка Кума = Кому В SeoPro есть такая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, либо в шаблоне, либо в материалах, либо при помощи модулей меню ставят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК. Ну а как команда СЕОшников с которыми я работаю говорят надо фиксить это, ибо много редиректов на сайте как постоянная мера не очень хорошо. 301 редирект целесообразно применять при переадресации со старой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред Змінено 21 вересня 2015 користувачем Waha Надіслати Поділитися на інших сайтах More sharing options... 8 months later... mdgr Опубліковано: 14 червня 2016 Share Опубліковано: 14 червня 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайта в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообщение Сайт выполнил переадресацию слишком много раз. При стандартном типе ЧПУ все нормально. Как это побороть? Надіслати Поділитися на інших сайтах More sharing options... 4 months later... Lili33 Опубліковано: 15 жовтня 2016 Share Опубліковано: 15 жовтня 2016 Пожалуйста подскажите что делать, никак не найду решение. Включила SeoPro и дубли то изчезли, но вот при переходе на категории вот такая штука "Неверное перенаправление на странице". Надіслати Поділитися на інших сайтах More sharing options... Назад 9 10 11 12 13 14 Вперед Сторінка 14 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
mdgr Опубліковано: 14 червня 2016 Share Опубліковано: 14 червня 2016 Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайта в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообщение Сайт выполнил переадресацию слишком много раз. При стандартном типе ЧПУ все нормально. Как это побороть? Надіслати Поділитися на інших сайтах More sharing options...
Lili33 Опубліковано: 15 жовтня 2016 Share Опубліковано: 15 жовтня 2016 Пожалуйста подскажите что делать, никак не найду решение. Включила SeoPro и дубли то изчезли, но вот при переходе на категории вот такая штука "Неверное перенаправление на странице". Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts