|
|
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

Зарегистрирован: 2008-07-15
Сообщений: 666
|
А ссылки, вроде
вашсайт/каталог/?curPos=21
как появились?
|
|
|
28.11.2011, 14:58
|
|
Asiat
Аниматика

Зарегистрирован: 2005-12-12
Сообщений: 576
|
Ссылки обычно появляются после опрометчивых экспериментов с количеством объектов на страницу. Говоришь этим заказчикам не трогать, говоришь... как дети.
Если критично, можете вообще закрыть curPos через robots, а навигацию свою сделать.
Потом можно в макете закрывать через meta robots, открывать только на определенные значения curPos.
Далее, 404, как вы говорите, прям из компонента (не пробовал, надо тестить)...
Короче, голь на выдумки богата...
|
|
|
28.11.2011, 17:22
|
|
talgat
Зарегистрирован: 2008-04-11
Сообщений: 4
|
Цитата:А ссылки, вроде
вашсайт/каталог/?curPos=21
как появились?
Скорее всего в результате экспериментов. На конкурентов не похоже, было бы гораздо больше таких страниц в индексе.
Цитата:Если критично, можете вообще закрыть curPos через robots, а навигацию свою сделать.
Я бы сказал — это большая брешь, которой благо пока еще никто не воспользовался.
В настоящий момент склоняюсь к своей навигации. Но возникла проблема, не могу получить значение $recNum, чтобы указать в $query_limit. В системных настройках компонента эта переменная недоступна.
|
|
|
29.11.2011, 17:01
|
|
Asiat
Аниматика

Зарегистрирован: 2005-12-12
Сообщений: 576
|
Насколько понимаю, recNum как раз можно указать в настройках. Либо подать параметром.
Про большую брешь (со стороны разработчиков системы) не совсем согласен. А как тогда быть в случаях, когда надо дать возможность юзеру выбрать самому количество объектов на страницу? Не вижу тут универсального решения, все решается на уровне конкретного проекта.
По-моему, проставить в meta что-то вроде noindex,follow - вполне достаточно. Условие можно сформулировать в тех же системных настройках. Оставьте индексирование для значений curPos, кратных вашему шаблону навигации, для остальных закройте.
|
|
|
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 ошибкой?
|