Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

curPos и дублирование контента

28.11.2011, 00:02
talgat

Зарегистрирован:
2008-04-11
Сообщений: 4

Здравствуйте!

В каталоге 100 товаров, вывод по 20 на странице. По логике должны 5 страниц. Но стандартный постраничный вывод через curPos плодит много лишних страниц. Получается, что в индексе поисковых систем вместо 5 страниц оказывается гораздо больше, т.к. curPos=21 (22, 23, 24, 25 и т.д.) тоже отображает страницы.

Подскажите, как сделать нормальный постраничный вывод Page1, Page2, Page3, Page4, Page5. Или хотя бы, чтобы показывались curPos=20 (40, 60, 80), а по адресам с curPos=21 (22, 23, .., 41, 42, и т.д.) возвращалась 404 ошибка.
28.11.2011, 12:08
Denis
Denis

Зарегистрирован:
2008-07-15
Сообщений: 666

А ссылки, вроде
вашсайт/каталог/?curPos=21
как появились?

Ксю доставляет...
28.11.2011, 14:58
Asiat
Аниматика
Asiat

Зарегистрирован:
2005-12-12
Сообщений: 576

Ссылки обычно появляются после опрометчивых экспериментов с количеством объектов на страницу. Говоришь этим заказчикам не трогать, говоришь... как дети.

Если критично, можете вообще закрыть curPos через robots, а навигацию свою сделать.
Потом можно в макете закрывать через meta robots, открывать только на определенные значения curPos.
Далее, 404, как вы говорите, прям из компонента (не пробовал, надо тестить)...
Короче, голь на выдумки богата...

Разработка сайтов на Netcat с 2006... хм-м ... или 2005 хммм года. В общем, обращайтесь.
28.11.2011, 17:22
talgat

Зарегистрирован:
2008-04-11
Сообщений: 4

Цитата:
А ссылки, вроде
вашсайт/каталог/?curPos=21
как появились?

Скорее всего в результате экспериментов. На конкурентов не похоже, было бы гораздо больше таких страниц в индексе.

Цитата:
Если критично, можете вообще закрыть curPos через robots, а навигацию свою сделать.

Я бы сказал — это большая брешь, которой благо пока еще никто не воспользовался.
В настоящий момент склоняюсь к своей навигации. Но возникла проблема, не могу получить значение $recNum, чтобы указать в $query_limit. В системных настройках компонента эта переменная недоступна.
29.11.2011, 17:01
Asiat
Аниматика
Asiat

Зарегистрирован:
2005-12-12
Сообщений: 576

Насколько понимаю, recNum как раз можно указать в настройках. Либо подать параметром.

Про большую брешь (со стороны разработчиков системы) не совсем согласен. А как тогда быть в случаях, когда надо дать возможность юзеру выбрать самому количество объектов на страницу? Не вижу тут универсального решения, все решается на уровне конкретного проекта.
По-моему, проставить в meta что-то вроде noindex,follow - вполне достаточно. Условие можно сформулировать в тех же системных настройках. Оставьте индексирование для значений curPos, кратных вашему шаблону навигации, для остальных закройте.

Разработка сайтов на Netcat с 2006... хм-м ... или 2005 хммм года. В общем, обращайтесь.
29.11.2011, 17:33
talgat

Зарегистрирован:
2008-04-11
Сообщений: 4

Цитата:
Насколько понимаю, recNum как раз можно указать в настройках. Либо подать параметром.

Про большую брешь (со стороны разработчиков системы) не совсем согласен. А как тогда быть в случаях, когда надо дать возможность юзеру выбрать самому количество объектов на страницу? Не вижу тут универсального решения, все решается на уровне конкретного проекта.
По-моему, проставить в meta что-то вроде noindex,follow - вполне достаточно. Условие можно сформулировать в тех же системных настройках. Оставьте индексирование для значений curPos, кратных вашему шаблону навигации, для остальных закройте.


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

Написал следующий код в Системных настройках:
Код:

if (!empty($recNum)) {} elseif (!empty($cc_env['RecordsPerPage'])) {$recNum = $cc_env['RecordsPerPage'];} else {$recNum = 20;}

$page = intval($_GET['page']);
$recNum = intval($recNum);
if ($page<1) {$page = 1;}
$recOffset = ($page-1) * $recNum;

$ignore_limit = 1;
$query_limit = "$recOffset, $recNum";


В данном случае можно указать количество объектов как в настройках компонента в разделе, так и при выводе через s_list_class(0,0,"recNum=10").

Осталось только решить вопрос с 404 ошибкой. Самый простой вариант вижу — это в Префиксе списка объектов написать код:
Код:

if ((ceil($totRows/$recNum)) < $page) {
header("HTTP/1.1 404 Not Found");
}

Но это не лучший вариант, т.к. посетитель не поймет, что попал на несуществующую страницу.

Другой вариант, который мне также не нравится — сделать редирект на страницу с 404 ошибкой.

Может есть в Неткате какая-нибудь функция show_404() и выводилась бы стандартная страница с 404 ошибкой?
198 196 2011-11-29 17:33:55 11718
Описание проекта