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

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> ';
			}
		}
Надіслати
Поділитися на інших сайтах

  • 1 month later...

 

а на версии 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 months later...

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

очень извиняюсь, после манипуляций выдает ошибку вверху страницы - неизвестная переменная на строках 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 weeks later...

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

... Кума?

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

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

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

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

Змінено користувачем Waha
Надіслати
Поділитися на інших сайтах

  • 8 months later...

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

Надіслати
Поділитися на інших сайтах


  • 4 months later...

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

×
×
  • Створити...

Important Information

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