Jump to content
Sign in to follow this  
RGB

SEO-контент и устранение дублей ссылок

Recommended Posts

а на версии 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> ';
			}
		}

Share this post


Link to post
Share on other sites

 

а на версии 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> ';
			}
		}

Решение никто не нашел?)

Share this post


Link to post
Share on other sites

Нашлось готовое решение для использования атрибутов 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());
  }
}

?>

Share this post


Link to post
Share on other sites

очень извиняюсь, после манипуляций выдает ошибку вверху страницы - неизвестная переменная на строках 28, 32,...,88 на странице pagination.php

не поможете исправить? 

Share this post


Link to post
Share on other sites

Помогите, пожалуйста. Сделала всё как выше, работает супер, только вот теперь поиск перестал работать...  Ругается так /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

не поможете исправить? 

Share this post


Link to post
Share on other sites

Значит не все сделали.

Share this post


Link to post
Share on other sites

Это реализуемо намного проще и согласно рекомендациям ПС. Халява на SEO оптимизации коммерческих сайтов заканчивается.
Кума надо убрать:

  • дубли из sitemap
  • постраничной навигации категорий производителей
  • убрать безсмысленный редирект со ссылок без слеша на слеш
  • сделать правильный robots
  • и другие оптимизации

Писать в личку

Share this post


Link to post
Share on other sites
убрать безсмысленный редирект со ссылок без слеша на слеш

 

с этого места поподробней..

... Кума?

Share this post


Link to post
Share on other sites

с этого места поподробней..

... Кума?

Очепятка Кума = Кому

В SeoPro есть такая особенность дописывать всем ссылкам "/" в конец, но многие этого не знают и когда создают сайт, то, либо в шаблоне, либо в материалах, либо при помощи модулей меню ставят ссылки на страницы без слеша и поэтому когда поисковики сканируют сайт они видят Ответ сервера Редирект 301 - затем 200 ОК, Вместо, того что бы сразу получать 200ОК.

Ну а как команда СЕОшников с которыми я работаю говорят надо фиксить это, ибо много редиректов на сайте как постоянная мера не очень хорошо.

301 редирект целесообразно применять при переадресации со старой страницы на новую, но никак не для переадресации со ссылки Например: motocycle => motocycle/ - Это бред

Edited by Waha

Share this post


Link to post
Share on other sites

Привет всем! Ребят, подскажите, плиз. Возникла следующая беда - при включении SeoPro если зайти на главную страницу сайта в адресной строке появляется ссылка вида http://mysite.ru/index.php?route=common/home и сообщение Сайт выполнил переадресацию слишком много раз. При стандартном типе ЧПУ все нормально. Как это побороть?

Share this post


Link to post
Share on other sites

Пожалуйста подскажите что делать, никак не найду решение. Включила SeoPro и дубли то изчезли, но вот при переходе на категории вот такая штука "Неверное перенаправление на странице".

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.