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

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


Recommended Posts

вообщем везде.

Тогда открываем catalog/controller/common/seo_pro.php

Ищем:

 if (isset($postfix)) {
  $seo_url .= trim($this->config->get('config_seo_url_postfix'));
 } else {
  $seo_url .= '/';
 }

Заменяем на:

 if (isset($postfix)) {
  $seo_url .= trim($this->config->get('config_seo_url_postfix'));
 } else {
  $seo_url .= '';
 }

Удачи! :wink:

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


Скажите у меня много дублей страниц на типа вот таких /shiny-avtomobilja-na-zakaz/shiny-goodyear/?page=5, не могу понять откуда они берутся и как от них избавится.

Это не дубли страниц, а дубли title, keywords и т.п. с категории shiny-goodyear, которая разбивается на страницы, при этом у каждой страницы одинаковые title, keywords и т.п. - вот гуглу и яндексу это и не нравится

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

Нет, у вас же дубли не целых страниц, а только тайтлов и дескрпишенов страниц категорий?

/shiny-avtomobilja-na-zakaz/shiny-goodyear/?page=5

Здесь же категория шин, а не конкретный товар. На товары то можно задать отдельные тайтлы, а вот каждая страница категории, т.е. каждая из:

/shiny-avtomobilja-na-zakaz/shiny-goodyear/?page=1

/shiny-avtomobilja-na-zakaz/shiny-goodyear/?page=2

/shiny-avtomobilja-na-zakaz/shiny-goodyear/?page=3

/shiny-avtomobilja-na-zakaz/shiny-goodyear/?page=4

/shiny-avtomobilja-na-zakaz/shiny-goodyear/?page=5

Имеет одинаковые тайтлы и дескрипшены, взяты из самой категории shiny-goodyear.

Как с этим бороться я не знаю, готовых решений не попадалось, можно конечно закрыть от индексации все страницы дальше 1-й, но это слишком жестоко, есть вариант забить на это, или можно еще использовать атрибуты rel="next" и rel="prev", поддерживаемые гуглом, но опять же - готовых решений мне не попадалось, хотя может они и есть где-то.

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

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

Решение нашлось тут.

  • +1 5
Надіслати
Поділитися на інших сайтах

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

Сайт умирает и ругается на эти добавленные строки

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


case 'product/product/review':
  case 'information/information/info':
return $link;
break;

Как я уже писал, переход через роутер и есть тот костыль, который исправил баг SeoPro с отображением контента в окнах colorbox (в моём случае), у меня теперь в окне colorbox как раз и отображается целевая страница без хедера, футера и боковых колонок, я к этому и стремился.

Спасибо за модуль и за вот эту поправку!

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


Сайт умирает и ругается на эти добавленные строки

Как минимум на 3-х магазинах (1.5.1.3 и 1.5.2) все отлично работает, вы хоть многоточие там не добавляли? Я надеюсь вы поняли, что нужно между этими двумя строчками

public $style_results = 'results';
public function render() {

вставить еще две

public $next = null;
public $prev = null;

и так далее

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

Как минимум на 3-х магазинах (1.5.1.3 и 1.5.2) все отлично работает, вы хоть многоточие там не добавляли? Я надеюсь вы поняли, что нужно между этими двумя строчками

public $style_results = 'results';
public function render() {

вставить еще две

public $next = null;
public $prev = null;

и так далее

именно так и сделал... и сразу ошибка в файле /system/library/pagination.php У меня стоит OcStore 1.5.2.1 Спасибо, буду разбираться что не так

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


именно так и сделал... и сразу ошибка в файле /system/library/pagination.php У меня стоит OcStore 1.5.2.1 Спасибо, буду разбираться что не так

У вас там должно быть так же:

<!--?php
class Pagination {
public $total = 0;
public $page = 1;
public $limit = 20;
public $num_links = 10;
public $url = '';
public $text = 'Showing {start} to {end} of {total} ({pages} Pages)';
public $text_first = '|<';
public $text_last = '>|';
public $text_next = '>';
public $text_prev = '<';
public $style_links = 'links';
public $style_results = 'results';

public $next = null;
 public $prev = null;

public function render() {
 $total = $this--->total;

 if ($this->page < 1) {
  $page = 1;
 } else {
  $page = $this->page;
 }

 if (!(int)$this->limit) {
  $limit = 10;
 } else {
  $limit = $this->limit;
 }

 $num_links = $this->num_links;
 $num_pages = ceil($total / $limit);

 $output = '';

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 ($num_pages > 1) {
  if ($num_pages <= $num_links) {
$start = 1;
$end = $num_pages;
  } else {
$start = $page - floor($num_links / 2);
$end = $page + floor($num_links / 2);

if ($start < 1) {
 $end += abs($start) + 1;
 $start = 1;
}

if ($end > $num_pages) {
 $start -= ($end - $num_pages);
 $end = $num_pages;
}
  }
  if ($start > 1) {
$output .= ' .... ';
  }
  for ($i = $start; $i <= $end; $i++) {
if ($page == $i) {
 $output .= ' <b>' . $i . '</b> ';
} else {
 $output .= ' <a href="' . str_replace('{page}', $i, $this->url) . '">' . $i . '</a> ';
}
  }

  if ($end < $num_pages) {
$output .= ' .... ';
  }
 }

 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);
  }

 $find = array(
  '{start}',
  '{end}',
  '{total}',
  '{pages}'
 );

 $replace = array(
  ($total) ? (($page - 1) * $limit) + 1 : 0,
  ((($page - 1) * $limit) > ($total - $limit)) ? $total : ((($page - 1) * $limit) + $limit),
  $total,
  $num_pages
 );

 return ($output ? '<div class="' . $this->style_links . '">' . $output . '</div>' : '') . '<div class="' . $this->style_results . '">' . str_replace($find, $replace, $this->text) . '</div>';
}
public function getNext() {
return $this->next;
}

public function getPrev() {
return $this->prev;
}
}
?>

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

появилась ошибка /vqmod/vqcache/vq2-catalog_view_theme_default_template_product_manufacturer_info.tpl on line 107 внизу страницы... И еще... А как быть с filterpro??? Переход на следующую страницу происходит без перезагрузки страницы.

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


  • 1 month later...

Моя модификация SEO Pro на основе модификаций Freelancer и Yesvik:

Порядок установки:

1. Распаковать архив

2. Сохранить оригинальный файл seo_pro.php (расположен в корень_вашего_магазина\catalog\controller\common\)

3. Скопировать из распакованного архива папку catalog в корень Вашего магазина

4. Зайти в phpMyAdmin и во вкладке SQL вставить весь текст из файла sql.txt, нажать «ОК»

Что исправлено:

1. Ошибка с отображением окна «Политика Безопасности»

2. Статьи, товары и т.п. по умолчанию заканчиваются символом «/» (оставлена возможность использовать свой префикс)

Скачать:

Большое спасибо Freelancer и Yesvik за их модификации SEO Pro! ;)

дравствуйте, при добавлении из текстового файла в MySql>SQL выпадает ошибка

Ошибка

SQL-запрос:

INSERT INTO url_alias( query, keyword )

VALUES (

'common/home', ''

);

Ответ MySQL: dot.gif

#1046 - No database selected

Подскажите что не так.

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

Ответ MySQL:

#1046 - No database selected

Меня может и смутило бы, но что оно означает я не понимаю.

Данная ошибка произошла вследствие того что Вы выполнили SQL-запрос не выбрав базу данных.

Чтобы это исправить зайдите в phpMyAdmin и в списке слева выберите Вашу базу данных, затем во вкладке SQL вставьте Ваш запрос и нажмите «ОК».

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


Данная ошибка произошла вследствие того что Вы выполнили SQL-запрос не выбрав базу данных.

Чтобы это исправить зайдите в phpMyAdmin и в списке слева выберите Вашу базу данных, затем во вкладке SQL вставьте Ваш запрос и нажмите «ОК».

Вошел

SQL-запрос: Документация
SELECT *
FROM `atribut_url_alias`
WHERE 1
INSERT INTO url_alias( query, keyword )
VALUES (
'common/home', ''
);
Ответ MySQL: Документация
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO url_alias (query, keyword) VALUES ('common/home', '')' at line 2

Чего то пишет с запросом не правильно, я всё скопировал из sql.txt

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

Доброго времени суток!

У меня такая проблема. Был куплен шаблон на ТемплейтМонстре. На OcStore он не встал. Долго ругалась со службой техподдержки. В общем, сейчас шаблон прикручен к OpenCart 1.5.4.1, поставлен русификатор. Сайт будет только русскоязычным. Хочу процесс сео сделать таким же простым и логичным как сейчас он сделан на ocStore 1.5.3.1.

Подскажите, как быть. Очень много модулей сео здесь, дописок к ним, исправлений в файлах...

Есть ли готовое бесплатное решение? Или платное... Или лучше адаптировать шаблон для ocStore 1.5.3.1/1.5.4.1?

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


Между Opencart и Ocstore ощутимая разница, поэтому если вы не разбираетесь в этом, лучше адаптировать этот ваш шаблон под Ocstore, тем более что отличий в плане шаблонов между сборками не так уж и много

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

  • 2 weeks later...

Пробуйте, в плане двойного слэша на главной должен точно помочь (рекомендую предварительно сделать бэкап Вашего SeoPro :wink:).

Добавил в свой SeoPro код

  case 'common/home':
   return trim($seo_url, '//');
   break;

Проблема с двойнэм слешэм решилась. Но при смене языка на главной выдает, что страница не найдена и в урле появляется следующее:......module/language

Не подскажите как прописать для языка теперь правильный адрес главной?

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


Не подскажите как прописать для языка теперь правильный адрес главной?

К сожалению, не подскажу, так как я не использую мультиязычность и соответственно вычистил движок и шаблон от хлама связанного с ее поддержкой.

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


К сожалению, не подскажу, так как я не использую мультиязычность и соответственно вычистил движок и шаблон от хлама связанного с ее поддержкой.

Эх, жаль. Пока извращаюсь тем, что в файлах '../controller/module/language.php' и '../controller/module/currency.php' меняю редиректы 'common/home' на любой другой, например, 'information/sitemap'

Может где-то в другом месте можно убрать этот двойной слэш (www.site.ru//) в окончании домена при смене валюты, языка на главной страницы, да и вообще для 'common/home' кроме как в SeoPro.php?)

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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