Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

[Решено] СЕО неоптимизированная пагинация


Vladzimir
 Поделиться

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

При пагинации ссылки на первую страницу выглядят не правильно - присутствует переменная page=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> ';
			}
	 }
и вместо

   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> ';
	}
   }
пишем

   for ($i = $start; $i <= $end; $i++) {
	if ($page == $i) {
	 $output .= ' <b>' . $i . '</b> ';
	} elseif($i == 1) {
	 $output .= ' <a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $i . '</a> ';
	} else {
		$output .= ' <a href="' . str_replace('{page}', $i, $this->url) . '">' . $i . '</a> ';
	}
   }
  • +1 15
Ссылка на комментарий
Поделиться на других сайтах

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

Ну, у меня стояла задача устранить дубль именно первой страницы.

Описание категории у меня выводится только на первой странице, которая без ?page=1. Так что если посетитель возвращался обратно на первую с помощью кнопки пагинации и попадал на ?page=1, то этот самый нужный текст уже не отображался. А теперь все четко :)

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


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

Подскажите, на одном сайте где версия 1.5.4.1 все получилось.

На другом сайте на версии 1.5.1.3 не работает:

1. при клике обратно на 1 страницу, переходит на главную.

2. при наведении на кнопку страницы пишет ЧПУ /page=2 при клике, получается вторая страница, но урл /#category_id=141&page=2&path=18_141&sort=p.sort_order&order=ASC&limit=32&min_price=50670&max_price=294975

 

что можно сделать? это может быть из-за модуля "FilterPro доработанный" который отбирает товар из категории по выбранным аттрибутам?

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


Подскажите, на одном сайте где версия 1.5.4.1 все получилось.

На другом сайте на версии 1.5.1.3 не работает:

1. при клике обратно на 1 страницу, переходит на главную.

2. при наведении на кнопку страницы пишет ЧПУ /page=2 при клике, получается вторая страница, но урл /#category_id=141&page=2&path=18_141&sort=p.sort_order&order=ASC&limit=32&min_price=50670&max_price=294975

 

что можно сделать? это может быть из-за модуля "FilterPro доработанный" который отбирает товар из категории по выбранным аттрибутам?

 

это однозначно filterpro, но проблемы имхо нет, ибо поисковый робот на ссылки мышкой не нажимает :) он будет видеть именно ../category/?page=2 и т.д.

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

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

это однозначно filterpro, но проблемы имхо нет, ибо поисковый робот на ссылки мышкой не нажимает :)

а люди нажимают? :)

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

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

При пагинации ссылки на первую страницу выглядят не правильно - присутствует переменная page=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> ';
			}
	 }
и вместо

   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> ';
	}
   }
пишем

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

Прописал. Теперь при клике по первой странцие кидает на главную.

Подскажи, плиз, как решить?

 

Установлен фильтр про.

Сама ссылка в адресной строке имеет вид:

сайт.ком/she/#category_id=59&page=2&path=59&min_price=0&max_price=676

 

При наведении на цифру в пагинации ссылка такая:

сайт.ком/page=2

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


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

Если примут мои pull-реквесты, этот обсуждаемый здесь фикс войдёт в сборку:

 

https://opencartforum.com/topic/27002-процесс-работ-над-релизом-ocstore-15512/?do=findComment&comment=210395

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


Все отлично работает, был косяк в filter pro.

Он съедает все ссылки. Прийдется разбираться с ним.

Когда фильтр отключен - ссылки работают нормально.

 

Если включен - то постраничка работает нормально, а возвращение со второй страницы на первую не происходит. Кидает на главную страницу сайта.

При этом ссылки на страницы и Вперед/Назад выглядят так: имясайта.ком/?page=2

Как-будто не записывается ничего в переменную url

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


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

Все отлично работает, был косяк в filter pro.

Он съедает все ссылки. Прийдется разбираться с ним.

Когда фильтр отключен - ссылки работают нормально.

 

Если включен - то постраничка работает нормально, а возвращение со второй страницы на первую не происходит. Кидает на главную страницу сайта.

При этом ссылки на страницы и Вперед/Назад выглядят так: имясайта.ком/?page=2

Как-будто не записывается ничего в переменную url

Тоже самое, но только в производителях. В каталоге все нормально. Но если убрать правки от Vladzimir в pagination.php, то все встает на свои места, но возвращаются эти пресловутые ?page=1. Сборка 1.5.5.1.2 с SeoPro и pull-реквестами от Alexey

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


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

Ну, у меня стояла задача устранить дубль именно первой страницы.

Описание категории у меня выводится только на первой странице, которая без ?page=1. Так что если посетитель возвращался обратно на первую с помощью кнопки пагинации и попадал на ?page=1, то этот самый нужный текст уже не отображался. А теперь все четко :)

 А как вы добились выведение описания категории только на первой странице категории?

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


хм...

как то все очень сложно...


        $output = str_replace('&page=1','',$output);
        return ($output ? '<div class="' . $this->style_links . '">' . $output . '</div>' : '') . '<div class="' . $this->style_results . '">' . str_replace($find, $replace, $this->text) . '</div>';
Ссылка на комментарий
Поделиться на других сайтах

 

А как вы добились выведение описания категории только на первой странице категории?

В шаблоне проверять 

if (isset($this->request->get['page']) &&  $this->request->get['page'] >1) {

//Не первая

} else {

//Первая

}

 

Или, более верно, делать это в контроллере.

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

Или, более верно, делать это в контроллере.

Так будет более правильно.

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

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

Решение всех проблем без редактирования системных  файлов

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

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

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

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

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

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

Войти

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

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

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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