Перейти к содержанию
Официальный форум поддержки Simpla

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

Ребят, привет!
Нужна подсказка, помогите плиз. 
Суть: если в категории появляется пагинация, то появляется и ссылка на страницу с ?page=all (все товары с категории).
Но если товаров мало и блок ссылок пагинации не появляется, страница с ?page=all все равно открывается при переходе по прямой ссылке. Пример: Здесь 
При определенной логике организации пагинации для поисковых систем это не правильно. Так получилось и у меня.
Задача: Сделать 301 редирект со страниц с page=all, если товаров не достаточно, чтобы появилась пагинация.
Что есть: В шаблоне вывода блока пагинации есть условие {if $total_pages_num>1}. Под мои нужды его можно переделать в {if $total_pages_num<1}

В /view/ProductsView.php есть код, я так понимаю нужно править примерно здесь:

		// Показать все страницы сразу
		
		if($this->request->get('page') == 'all')
		$items_per_page = $products_count;	
		
		$pages_num = ceil($products_count/$items_per_page);
		$this->design->assign('total_pages_num', $pages_num);
		$this->design->assign('total_products_num', $products_count);		

		$request_page = $this->request->get('page');
		if(intval($request_page)==1)
		{
			header('Location: '.$this->request->url(array('page'=>null)), true, 301);
			exit;
		}
		elseif($current_page > 1 && $current_page > $pages_num)
		{
			if($pages_num==1)
				$pages_num= null;
			
			header('Location: '.$this->request->url(array('page'=>$pages_num)), true, 301);
			exit;
		}
		
		
		$this->design->assign('total_pages_num', $pages_num);
		$this->design->assign('total_products_num', $products_count);

		$filter['page'] = $current_page;
		$filter['limit'] = $items_per_page;

ЗЫ: теоретически этот участок может отличаться от оригинального в сборке, у меня многое затрагивалось, возможно и этот код тоже.

 

Когда-то у меня была реализована логика пагинации без страниц с page=all. Тогда мы просто редиректили эту страницу на основную. Тогда в /view/ProductsView.php код выглядел так:

 

		// Показать все страницы сразу
		$pages_num = ceil($products_count / $items_per_page);
		$request_page = $this->request->get('page');
		if(intval($request_page)==1)
		{
			header('Location: '.$this->request->url(array('page'=>null)), true, 301);
			exit;
		}
		
		elseif($current_page > 1 && $current_page > $pages_num)
		{
			if($pages_num==1)
				$pages_num= null;
			
			header('Location: '.$this->request->url(array('page'=>$pages_num)), true, 301);
			exit;
		}
		
		
		$this->design->assign('total_pages_num', $pages_num);
		$this->design->assign('total_products_num', $products_count);

		$filter['page'] = $current_page;
		$filter['limit'] = $items_per_page;

Отсюда можно взять сам редирект.

 

Вопрос: как правильно в существующий код (который первый в моем посте) вписать 301 редирект с условием, чтобы {if $total_pages_num<1}, то редиректило на основную страницу?

Изменено пользователем kazak
Ссылка на сообщение
Поделиться на другие сайты
if($this->request->get('page') == 'all')
	$items_per_page = $products_count;	

на 

$request_page = $this->request->get('page');
if($request_page == 'all')
{
	if($products_count > $items_per_page)
		$items_per_page = $products_count;	
	else
		$request_page = 1;

}
Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...