Перейти к содержанию
Sway

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

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

День добрый

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

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

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 спокойно поймут стандарт, в отличии от правленого кода. Т.е. лучше стабильность

Поделиться сообщением


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

Т.е. лучше стабильность

 

это конечно да, согласен

Поделиться сообщением


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

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

если в пагинации страниц больше чем 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);

Поделиться сообщением


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

спасибо!! помогло!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
		$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);

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ПЕРЕЧИТАЙ ТЕМУ И НЕ ЗАДАВАЙ ВОПРОСОВ, ОТВЕТЫ НА КОТОРЫЕ ЕСТЬ В ПРЕДЫДУЩИХ СООБЩЕНИЯХ.

Поделиться сообщением


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

как убрать вопросительный знак в ссылке ?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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
		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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 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/ . Помогите как это реализовать

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От markimax
      590.00 руб
      Скачать/Купить дополнение


      SEO мультиязык 2 (opencart 2.x & 1.5.x)
      Демо Демо админ. части
      логин / пароль
      demo / demo
      Документация и инструкция по установке
      Добавил markimax Добавлено 19.04.2016 Категория SEO, карта сайта, оптимизация Системные требования PHP 5.3+ Сайт разработчика http://opencartadmin.com Старая цена Метод активации Через официальный сайт дополнения Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От Otvet
      320.00 руб · Срок продления: 100.00 руб за 12 месяцев
      Скачать/Купить дополнение


      [SEO] Full IndeX : Улучшение индексации

      Основа:
       
      Не забудьте указать домен при покупке!
      Что такое продление и для чего: Читаем
       
       
       
      Модуль помогает улучшить индексацию, более продуктивно "прокачать"1 товары и решить проблему дублирования2 страниц постраничной навигации, что позволяет поднять в выдаче НЧ-запросы страниц товаров расположенных на удаленных страницах. Управлять множеством факторов и решает ряд недочетов в Opencart.
       
       
       
       
      Что делает модуль:
      позволяет устранить большой ряд дублей способствует распределению веса и более полной перелинковке позволяет гибко управлять выводом атрибутов prev | next и правильно объединять страницы в одну цепочку  по рекомендации google уникализирует страницы (они перестают быть дублями), в том числе: шаблоны мета-данных, шаблон заголовков, скрытие/закрытие сквозных блоков валидация и исправление значений стандартных параметров позволяет гибко управлять выводом canonical, с учетом таких факторов как тип url и путь в url, когда нужно и где нужно способствует полноценной индексации товаров при отсутствии sitemap (либо когда не принимается яндексом из-за размера) управление get-параметрами (редиректы, canonical, seo_pro) позволяет полноценно использовать seo-фильтры позволяет убирать "хвосты" в индексе позволяет блокировать индексации отзывов как отдельного документа и сделать в то же время более полную индексацию отзывов способствует заполнению анкор листа товаров на страницах 2 и далее посадочные страницы категория/бренд, для исключения дублей и использования в продвижении исправление ссылок и багов пагинаций фикс кучи мелких проблем и недоработок в опенкарт и многое другое  
      ЕЩЕ больше функционала:
       
      Для более продуктивной борьбы с дублями так же крайне желательно наличие SEO_Pro и правильного robots.txt
       
      [bonus] Sitemap Lite (OCMOD для opencart 2.x):
      заменяет оригинальный catalog/controller/feed/google_sitemap.php
      ускоренная генерация благодаря собственной функции выборки товаров (~ в 10 раз) добавление lastmod (значительно ускоряет индексацию) устранение дублей товаров валидация яндексом фикс &amp при использовании seo_pro т.к. бонус, не подпадает под стандартную поддержку  
      Для автоматического заполнения SEO URL (ЧПУ) можно установить это дополнение: https://opencartforum.com/files/file/2833-автоматическое-заполнение-чпу-ocmod/ и/или https://opencartforum.com/files/file/5570-fx-url-generator-free/
       
      Преимущества перед закрытием страниц в robots.txt
      Преимущества перед директивой noindex (no)follow
      Преимущества перед простым открытием страниц для индексации
      Преимущества перед директивой canonical
      Для проверки работы после установки напишите адрес сайта в ЛС автору
      "Цитаты великих" или "А нужен ли модуль?"
       
      Для более продуктивной борьбы с дублями так же крайне желательно наличие SEO_Pro и правильного robots.txt
       
       
      1 - Обособленные страницы (доступные только через sitemap) не получают статический вес [PR] и имеют пустой анкор-лист.
      2 - Чем плохи дубли:
      ухудшают и замедляют индексацию потеря веса (pagerank) "основной" страницей категории/производителя часть товаров не могут получить внутренний вес ______________________________________________________
      Добавил Otvet Добавлено 15.08.2015 Категория SEO, карта сайта, оптимизация Системные требования умение читать инструкцию, работающий установщик Сайт разработчика http://full-index.ru Старая цена 399 Метод активации По запросу в ЛС
      По запросу на почту
      Автоматическая активация
      Через официальный сайт дополнения Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От Otvet
      Основа:
       
      Не забудьте указать домен при покупке!
      Что такое продление и для чего: Читаем
       
       
       
      Модуль помогает улучшить индексацию, более продуктивно "прокачать"1 товары и решить проблему дублирования2 страниц постраничной навигации, что позволяет поднять в выдаче НЧ-запросы страниц товаров расположенных на удаленных страницах. Управлять множеством факторов и решает ряд недочетов в Opencart.
       
       
       
       
      Что делает модуль:
      позволяет устранить большой ряд дублей способствует распределению веса и более полной перелинковке позволяет гибко управлять выводом атрибутов prev | next и правильно объединять страницы в одну цепочку  по рекомендации google уникализирует страницы (они перестают быть дублями), в том числе: шаблоны мета-данных, шаблон заголовков, скрытие/закрытие сквозных блоков валидация и исправление значений стандартных параметров позволяет гибко управлять выводом canonical, с учетом таких факторов как тип url и путь в url, когда нужно и где нужно способствует полноценной индексации товаров при отсутствии sitemap (либо когда не принимается яндексом из-за размера) управление get-параметрами (редиректы, canonical, seo_pro) позволяет полноценно использовать seo-фильтры позволяет убирать "хвосты" в индексе позволяет блокировать индексации отзывов как отдельного документа и сделать в то же время более полную индексацию отзывов способствует заполнению анкор листа товаров на страницах 2 и далее посадочные страницы категория/бренд, для исключения дублей и использования в продвижении исправление ссылок и багов пагинаций фикс кучи мелких проблем и недоработок в опенкарт и многое другое  
      ЕЩЕ больше функционала:
       
      Для более продуктивной борьбы с дублями так же крайне желательно наличие SEO_Pro и правильного robots.txt
       
      [bonus] Sitemap Lite (OCMOD для opencart 2.x):
      заменяет оригинальный catalog/controller/feed/google_sitemap.php
      ускоренная генерация благодаря собственной функции выборки товаров (~ в 10 раз) добавление lastmod (значительно ускоряет индексацию) устранение дублей товаров валидация яндексом фикс &amp при использовании seo_pro т.к. бонус, не подпадает под стандартную поддержку  
      Для автоматического заполнения SEO URL (ЧПУ) можно установить это дополнение: https://opencartforum.com/files/file/2833-автоматическое-заполнение-чпу-ocmod/ и/или https://opencartforum.com/files/file/5570-fx-url-generator-free/
       
      Преимущества перед закрытием страниц в robots.txt
      Преимущества перед директивой noindex (no)follow
      Преимущества перед простым открытием страниц для индексации
      Преимущества перед директивой canonical
      Для проверки работы после установки напишите адрес сайта в ЛС автору
      "Цитаты великих" или "А нужен ли модуль?"
       
      Для более продуктивной борьбы с дублями так же крайне желательно наличие SEO_Pro и правильного robots.txt
       
       
      1 - Обособленные страницы (доступные только через sitemap) не получают статический вес [PR] и имеют пустой анкор-лист.
      2 - Чем плохи дубли:
      ухудшают и замедляют индексацию потеря веса (pagerank) "основной" страницей категории/производителя часть товаров не могут получить внутренний вес ______________________________________________________
    • От Exzik
      Добрый день , форумчане 
      Появилась проблема, которую я не могу решить сам 
      На страницу категорий добавил скрипт прокрутки, работает как часы  и грузит все отлично.
      Проблема в том, что из-за этого скрипта перестали работать кнопки (Добавить в корзину и т.д )
      Не могли бы подсказать в чем именно проблема ? 
      Ссылка на сайт  тут
       
       
      Скрипт 
      $(function() { function scrollLoader() { console.log('---', 123) if ($(window).scrollTop() == $(document).height() - $(window).height()) { console.log('---', 'ok') setTimeout(function() { $('#endless').trigger('click') }, autoscroller.delay) } } var autoscroller = [] //setting autoscroller.hidePagination = 1 autoscroller.autoScroll = 0 autoscroller.catcher = '#endless' autoscroller.delay = 1000 autoscroller.loading = 0 $(window).scroll(function() { scrollLoader() if (inWindow(autoscroller.catcher) && !autoscroller.loading && autoscroller.autoScroll) { autoscroller.loading = true $('#endless .fa-refresh').addClass('btn-load-new') } }) if ($('.category-catalog').length) { if ($('.pagination').length && !$('.pagination > li:last-child').hasClass('active')) { $('#content col-12 col-md-9 order-2').hide() $('.pagination') .parent() .before( '<div class="col-xs-12 text-center"><button class="btn btn-success btn-lg" id="endless" style="margin: 15px auto; padding: 10px 120px;" ><span class="btn-load-new">Еще товары</span></i></button></div>') $('#endless').on('click', function(e) { var lastProduct = $('.pagination') .closest('.category-catalog') .find('.front-top-products li:last-child') var nextPage = $('ul.pagination li.active').next().find('a:first-child') var nextPageHref = nextPage.attr('href').substring(7) // console.log('---',nextPageHref); // console.log('---', nextPage.attr('href')); $.ajax({ url: 'https://' + nextPageHref, beforeSend: function() { $('#endless .fa-refresh').addClass('btn-load-new') }, success: function(data) { var products = $(data).find('.category-catalog .front-top-products') lastProduct.after(products) $('.pagination').html($(data).find('.pagination > *')) nextPage = $('ul.pagination li.active').next().find('a:first-child') if (nextPage.length == 0) { $('#endless').remove() } else { $('#endless .fa-refresh').removeClass('btn-load-new') } autoscroller.loading = 1 }, }) return false }) } } function inWindow(el) { if ($(el).length) { var scrollTop = $(window).scrollTop() var windowHeight = $(window).height() var offset = $(el).offset() if (scrollTop <= offset.top && ($(el).height() + offset.top) < (scrollTop + windowHeight)) { return true } } return false } })  
    • От uglevsky
      Приветствую всех! Столкнулся с таким казусом! Страница пагинации (см. спойлер) которой не существует, отдает код 200. Самое интересное, последнее число можно поставить любое, и страница будет отдавать код 200
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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