Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


 Погделиться

Рекомендованные сообещёния

а на версии 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> ';
			}
		}
Ссылка на комменирий
Погделиться на других сайих

  • 1 месяц спустя...

 

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

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

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


  • 4 месяца спустя...

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

?>

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


  • 6 месяэтов спустя...

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

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

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


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

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

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


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

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

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

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

убрать безсмысленный редирект со ссылок без слеша на слеш

 

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

... Кума?

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

  • 2 негдели спустя...

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

... Кума?

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

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

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

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

Изменено пользователем Waha
Ссылка на комменирий
Погделиться на других сайих

  • 8 месяэтов спустя...

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

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


  • 4 месяца спустя...

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

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

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

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