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

[Решено] Убрать в пагинации из ссылки на первую страницу параметр page


Recommended Posts

День добрый

в пагинации есть небольшая ошибка

например мы в категории переходим на вторую страницу по ссылке вида:

http://site.ru/catalog/?page=2

и у нас появилась ссылка на первую страницу вида:

http://site.ru/catalog/?page=1

что неправильно, так как должна она быть вида

http://site.ru/catalog/

 

как поправить? желательно правкой кода файла:

system/library/pagination.php

 

чтобы редиректы не делать

 

Version 1.5.3.1

SeoPro штатное

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


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

		$clear_page_param_replace_from = array('&page=1','&page=1','?page=1');
		$output = str_replace($clear_page_param_replace_from, '', $output);
		
		return ($output ? '<div class="' . $this->style_links . '">' . $output . '</div>' : '') . '<div class="' . $this->style_results . '">' . str_replace($find, $replace, $this->text) . '</div>';
  • +1 1
Надіслати
Поділитися на інших сайтах

Есть решение и без правки system/library/pagination.php и без vqmod

И приводит пагинацию к правильному виду

 

Самая большая проблема, это в том, что при пагинации если title, description одинаковые (как по умолчанию в opencart и сборках) и товары однотипные в списке, то ПС могут подумать что это дубль страница, что очень негативно для seo, а благодаря модулю - этого быть не может, т.е. модуль предотвращает дубли страниц при пагинации добавляя новый title и description второстепенной страницы отличный от "главной" страницы категории, чтобы не "опустить" её в поисковой выдаче. Также фиксит баг opencart для мета тегов главной страницы
Теперь модуль реализует правильную SEO пагинацию вида http ://site.com/page-2 и т.п.
С изменением titel документа и description HTML документа в зависимости от языка т.е.например "Компьютеры - страница 2" (русский), "Computers - page 2" (english). Также теперь нету ссылки на первую страницу (/en/desctops/page-1) заменяется на /en/desctops/)

7193559048.png

<title>Desktops page 2</title>
<base href="http://en.opencartadmin.com/" />
<meta name="description" content="Example of category description page 2" />
<meta property="og:title" content="Desktops page 2" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://en.opencartadmin.com/en/desktops/page-2" />
  • +1 1
Надіслати
Поділитися на інших сайтах

 

Есть решение и без правки system/library/pagination.php и без vqmod

И приводит пагинацию к правильному виду

 

ну я титлы и дискрипшены уже привел к правильному виду, там кода 2 строки

но все равно, спасибо за ответ

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


ну я титлы и дискрипшены уже привел к правильному виду, там кода 2 строки

но все равно, спасибо за ответ

Да, вот только чем решение лучше, при обновлении opencart-a  и т.п. манипуляций не надо будет заново вспоминать и вносить правки (читаем - костыли) в код :)

Да и другие модули на vqmod спокойно поймут стандарт, в отличии от правленого кода. Т.е. лучше стабильность

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

  • 2 months later...

обнаружил ошибку

если в пагинации страниц больше чем 9

то у всех остальных которые дальше 9 страницы идет обрезка

например должна быть

http://site/cat/?page=12

в пагинации обрежется до

http://site/cat/2

и ссылка станет нерабочей

 

как лечить?

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


незнаю можно ли ссылку давать, но вот: http://xn--96-6kcx8bg9h.xn--p1ai/pryaja/?page=2

наедите в пагинации на ссылку с 10, и увидите что идет обрезка гет параметра

 

 

в целом файл пагинации стандартный

Version 1.5.3.1

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


		$clear_page_param_replace_from = array(

'&page=1\'',

'&page=1\'',

'?page=1\'',

'&page=1"',

'&page=1"',

'?page=1"',

'&page=1&',

'&page=1&',

'?page=1&',

);

$clear_page_param_replace_to = array(

'\'',

'\'',

'\'',

'"',

'"',

'"',

'&',

'&',

'&',

);

$output = str_replace($clear_page_param_replace_from, $clear_page_param_replace_to, $output);

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

  • 10 months later...
		$clear_page_param_replace_from = array(
			'&page=1\'',
			'&page=1\'',
			'?page=1\'',
			
			'&page=1"',
			'&page=1"',
			'?page=1"',
			
			'&page=1&',
			'&page=1&',
			'?page=1&',
		);
		$clear_page_param_replace_to = array(
			'\'',
			'\'',
			'\'',
			
			'"',
			'"',
			'"',
			
			'&',
			'&',
			'&',
		);
		$output = str_replace($clear_page_param_replace_from, $clear_page_param_replace_to, $output);

В какой файл и в какие строки нужно вставить этот код?

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


  • 1 month later...

как убрать вопросительный знак в ссылке ?page=2 если это сделать в файле seo_pro.php то ссылки убирают знак вопроса но при переходе на страницу пишет страница не найдена помогите пожалуйста в этом вопросе

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


Newcomebel, а зачем убирать?

ну вопервых меня смущает то что если после этого адреса поставит  любые другие символы эта же страница и показывает например ?page=2/5/10/5hjhjh

вовторых мне больше нравится когда пагинация такого вида page/2 или хотябы такого page=2

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


ну вопервых меня смущает то что если после этого адреса поставит  любые другие символы эта же страница и показывает например ?page=2/5/10/5hjhjh

вовторых мне больше нравится когда пагинация такого вида page/2 или хотябы такого page=2

А вы не подставляйте

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

		if(isset($this->request->get['_route_'])) {

			$route_ = $this->request->get['_route_'];

			$tokens = explode('/', $this->request->get['_route_']);

			if (strpos($tokens[count($tokens)-1],'page-')!==false) {
				$page=str_replace('page-','',$tokens[count($tokens)-1]);
				$this->request->get['page']=$page;
				unset($tokens[count($tokens)-1]);
				$this->request->get['_route_']=implode('/',$tokens);
			}

			if(array_key_exists($tokens[0], $this->languages)) {
				$code = $tokens[0];
				$this->request->get['_route_'] = substr($this->request->get['_route_'], strlen($code) + 1);
			}

			if(trim($this->request->get['_route_']) == '' || trim($this->request->get['_route_']) == 'index.php') {
				unset($this->request->get['_route_']);
			}
		}

			$parts_end = end($parts);
			if (strpos($parts_end, 'page-') !== false) {
				list($key, $value) = explode("-", $parts_end);
				if ($value != 1 && $value != 0) {
					$this->request->get[$key] = $value;
				}
				unset($parts[count($parts) - 1]);
			}
			reset($parts);


			list($last_part) = explode('.', array_pop($parts));
			array_push($parts, $last_part);

			$rows = array();
			foreach ($parts as $keyword) {
				if (isset($this->cache_data['keywords'][$keyword])) {
					$rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]);
				}
			}

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

		if(substr($seo_url, -2) == '//') {
			$seo_url = substr($seo_url, 0, -1);
		}

		if ($data) {
			foreach ($data as $key => $value) {
				if ($key == 'page') {
					$seo_url .= $key . "-" . $value.'/';
					unset($data[$key]);
				}
			}
		}

		if (count($data)) {
			$seo_url .= '?' . urldecode(http_build_query($data, '', '&'));
		}

как-то так. Куски сами вставляйте в свой seo pro

 

не получилось(

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


  • 1 year later...
В 06.01.2015 в 10:30, afwollis сказал:

 


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

>>

 


		$clear_page_param_replace_from = array('&page=1','&page=1','?page=1');
		$output = str_replace($clear_page_param_replace_from, '', $output);
		
		return ($output ? '<div class="' . $this->style_links . '">' . $output . '</div>' : '') . '<div class="' . $this->style_results . '">' . str_replace($find, $replace, $this->text) . '</div>';

Это решение не помогло. Нужно  чтобы был редирект с 

http://site.ru/catalog/?page=1

на

http://site.ru/catalog/ . Помогите как это реализовать

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


  • 3 years later...

Решение на Opencart 3 / Ocstore 3, думаю на более ранних версиях принцип тот же.

Если вы используете SeoPro.

\system\library\seopro.php

 

Найти:

		// remove negative page number
		if (isset($this->request->get['page'])) {
			if((float)$this->request->get['page'] < 1) {
				unset($this->request->get['page']);
			};
		}

Заменить:

		// remove negative page number
		if (isset($this->request->get['page'])) {
			if((float)$this->request->get['page'] < 2) {
				unset($this->request->get['page']);
			};
		}

Все элементарно, меняется всего одна цифра в коде. Перенаправление сопровождается 301 редиректом.

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


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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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