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

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


Vladzimir

Recommended Posts

При пагинации ссылки на первую страницу выглядят не правильно - присутствует переменная 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 month later...
  • 7 months later...

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

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

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


  • 4 months later...

Подскажите, на одном сайте где версия 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 month later...
  • 4 weeks later...

При пагинации ссылки на первую страницу выглядят не правильно - присутствует переменная 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 weeks later...

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

 

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

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


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

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

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

 

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

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

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

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


  • 4 weeks later...

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

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

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

 

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

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

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

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

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


  • 2 months later...

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

Описание категории у меня выводится только на первой странице, которая без ?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 months later...
  • 1 month later...

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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