Цитата |
---|
Сергей Попов написал:
Цитата |
---|
Дмитрий Яковенко написал: Или вы ждете пока вам готовое решение выложат? |
Готовое решение было бы идеально, я до сих пор так и не смог этого сделать, ибо знаний не хватает. может быть за донат кто сделает? |
Буквально только что делал для клиента нечто подобное, но с каталогом.
Разницы в принципе нет никакой, так как работа идет через комплексный компонент.
Дабы не ходить вокруг да около:
#1. Изменяем
настройки ЧПУ комплексного компонента (в моем случае
bitrix:catalog) в разделе "Детальная информация":
С
#SECTION_CODE#/#
ELEMENT_ID#/
НА
#SECTION_CODE#/#
КОД_ВАШЕГО_СВОЙСТВА#/
#2. Делаем
встройку в шаблон компонента списка (в моем случае
bitrix:catalog.section):
Код |
---|
$pattern = '/\/(.*)\/(.*)\/(.*)\//i';
$replacement = '/$1/$2/' . trim($arElement["PROPERTIES"]["КОД_ВАШЕГО_СВОЙСТВА"]["VALUE"]) . "/";
$element_link = preg_replace($pattern, $replacement, $arElement["DETAIL_PAGE_URL"]);
?><a href="<?=$element_link?>" title="<?= $arElement["NAME"] ?>"><?= $arElement["NAME"] ?></a><? |
Код выше берет УРЛ до блока /#КОД_ВАШЕГО_СВОЙСТВА#/ и объединяет его с вашим свойством. Сие сделано для того, что бы сохранить невредимым полный путь до элемента с минимальными изменениями первоначального кода.
#3. Делаем
встройку в шаблон подключения компонента детальной страницы (в моем случае на странице
element.php компонента
bitrix:catalog):
Код |
---|
$pattern = '/\/.*\/.*\/(.*)\//i';
$replacement = '$1';
$КОД_ВАШЕГО_СВОЙСТВА= preg_replace($pattern, $replacement, $APPLICATION->GetCurPage());
$arSelect = Array("ID", "NAME", "CODE");
$arFilter = Array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "=PROPERTY_КОД_ВАШЕГО_СВОЙСТВА" => $КОД_ВАШЕГО_СВОЙСТВА);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nTopCount" => 1), $arSelect);
$element = $res->Fetch();
$arResult["VARIABLES"]["ELEMENT_ID"] = $element["ID"];
$arResult["VARIABLES"]["ELEMENT_CODE"] = $element["CODE"]; |
Код выше получает значение КОД_ВАШЕГО_СВОЙСТВА, находит по нему нужный элемент, и делает встройку в массив результата первоначальной выборки (неудачной), тем самым заменяя найденный элемент (Элемент не найден) на найденный по КОД_ВАШЕГО_СВОЙСТВА.