[QUOTE]Присоединяюсь к обсуждению проблемы.
Допустим есть:
/раздел1/раздел2/раздел3/элемент
если в комплексном компоненте каталога просматривать /раздел1/раздел2/ то ссылка на детальный элемент строится от него, то есть /раздел1/раздел2/элемент. Не по полному пути, а из текущего просматриваемого раздела. Если смотреть /раздел1 то ссылка на детальную страницу строится как /раздел1/элемент.
Самое что интересное то что все три ссылки будут рабочие.
/раздел1/раздел2/раздел3/элемент
/раздел1/раздел2/элемент
/раздел1/элемент
Я временно решил эту проблему таким образом:
Файл result_modifier.php компонента catalog.section
[CODE] foreach ($arResult["ITEMS"] as $cell => $arElement) {
$arElementId[] = $arElement["ID"];
}
$CIBlockResult = CIBlockElement::GetList(
Array("SORT"=>"ASC"),
Array("ID" => $arElementId)
);
while ($arElement = $CIBlockResult->GetNext()) {
$arResult["RIGHT_DETAIL_URL"][$arElement["ID"]] = $arElement["DETAIL_PAGE_URL"];
} [/CODE]В шаблоне компонента ссылка на детальную страницу элемента теперь имеет вид:
[CODE] <? foreach ($arResult["ITEMS"] as $cell => $arElement): ?>
<a href="<?= $arResult["RIGHT_DETAIL_URL"][$arElement["ID"]] ?>" title="<?= $arElement["NAME"] ?>" ><?= $arElement["NAME"] ?></a>
<? endforeach; ?> [/CODE]
[/QUOTE]
Подтверждаю работает, но мне кажется вот так лучше:
Файл result_modifier.php компонента catalog.section[CODE]foreach ($arResult["ITEMS"] as $cell => $arElement):
$res = CIBlockElement::GetByID($arElement["ID"]);
if($ar_res = $res->GetNext())
$arResult["ITEMS"][$cell]["DETAIL_PAGE_URL"] = $ar_res["DETAIL_PAGE_URL"];
endforeach; [/CODE]
Просто потому что в шаблоне
[CODE]["DETAIL_PAGE_URL"][/CODE]
менять не нужно.