[QUOTE]
Александр Остроумов написал:
$val = $APPLICATION->GetCurPageParam("", array_keys($_GET), false());[/QUOTE]
Во-первых такой штуки, как false() не существует, это не метод.
Во-вторых, зачем использовать GetCurPageParam если тот же результат выдаст GetCurPage(false)?
К тому же,
/catalog/section/
/catalog/section/?page=2
Не являются одинаковыми страницами,
т.к. первая выдает товары с первой страницы, а вторая со второй, и их то как раз не надо склеивать, по этому предложенный метод уберет из индекса страницы не только лишние, но и полезные. По этому всегда смотрите что применяете прежде чем применить.
Вообще нужно взять GetCurPageParam затем проверить, есть ли там параметр постраничной навигации (или еще какой нужный) а потом уже убирать все остальное. и делать такую страницу канонической.
[QUOTE]
higimo написал:
А если на отдельной странице, где подключается один компонент и есть пагинация, можно так:
[CODE] $APPLICATION->AddHeadString('<li nk rel="canonical" href="http://site.ru' . str_replace('index.php', '', $APPLICATION->GetCurPage(true)) . '" />'); [/CODE][/QUOTE]
Вместо str_replace('index.php', '', $APPLICATION->GetCurPage(true))
Нужно просто написать
$APPLICATION->GetCurPage(false)
Но проблема будет таже с параметрами постраничной навигации.
Да, кстати, по поводу решения
Где то так будет работать:
<?
$gets = array();
foreach($_GET as $gettik=>$val) {
if(strpos($gettik, 'PAGEN_') === false) {
$gets[$gettik] = $val;
}
}
$page = $APPLICATION->GetCurPageParam("", array_keys($gets), false);
if($APPLICATION->GetCurPageParam("", "", false) !== $page) {
$APPLICATION->AddHeadString('<link href="'.$page.'" rel="canonical" />',true);
}
?>
ну и в цикле проверки на параметры, можете свои добавить параметры - которые не являются каноническими для страницы.
Можно вставить это в header.php если конечно у вас все страницы без параметров =) Если у вас не настроены ЧПУ - рекомендую настроить, ну или добавлять ваши параметры (вроде id) в цикл проверки.