Цитата | ||
---|---|---|
Сергей Попов написал:
может быть за донат кто сделает? |
Разницы в принципе нет никакой, так как работа идет через комплексный компонент.
Дабы не ходить вокруг да около:
#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"]; |
Код выше получает значение КОД_ВАШЕГО_СВОЙСТВА, находит по нему нужный элемент, и делает встройку в массив результата первоначальной выборки (неудачной), тем самым заменяя найденный элемент (Элемент не найден) на найденный по КОД_ВАШЕГО_СВОЙСТВА.