Цитата | ||
---|---|---|
Анатолий Ветринцев написал: Пять лет прошло, может кому то поможет, сам запарился пока искал. Стандартный метод спутывал элементы с разделами. Написал свое короткое пользовательское свойство. Мне просто нужна была ссылка на любой раздел любого ИБ (даже своего) чтобы подтянуть в шаблоне соответствующую ссылку и вывести ее. По сути оно хранит число, но дает удобный интерфейс для выбора. и работает в множественном режиме. Вставляете этот код (или инклудите) в bitrix/php_interface/init.php и в списке типов свойств ИБ появляется "Ссылка на раздел" :
|
Спасибо огромное, годы идут, пользователи сами прокачивают битрикс, предложу свой вариант данного кода, удобная иерархия разделов в списке четыре уровня вложенности если у вас больше уровней можно добавлять хоть до бесконечности, если меньше то лишний можно убрать:
Цитата |
---|
public function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName) { $arFilter = array( 'ACTIVE' => 'Y', 'IBLOCK_ID' => ИД инфоблока каталога, 'GLOBAL_ACTIVE'=>'Y', ); $arSelect = array('IBLOCK_ID','ID','NAME','DEPTH_LEVEL','IBLOCK_SECTION_ID'); $arOrder = array('DEPTH_LEVEL'=>'ASC','SORT'=>'ASC'); $rsSections = CIBlockSection::GetList($arOrder, $arFilter, false, $arSelect); $sectionLinc = array(); $arResult['ROOT'] = array(); $sectionLinc[0] = &$arResult['ROOT']; while($arSection = $rsSections->GetNext()) { $sectionLinc[intval($arSection['IBLOCK_SECTION_ID'])]['CHILD'][$arSection['ID']] = $arSection; $sectionLinc[$arSection['ID']] = &$sectionLinc[intval($arSection['IBLOCK_SECTION_ID'])]['CHILD'][$arSection['ID']]; } $optionsHTML='<option value="">( не выбрано )</option>'; foreach($sectionLinc[0]['CHILD'] as $ib){ $optionsHTML .= '<option value="' . $ib['ID'] . '"' . ($value["VALUE"] == $ib['ID'] ? ' selected' : '') . '> <b>[' . $ib['ID'] . ']</b> ' . $ib['NAME'] . '</option>'; //Первый уровень if(isset($ib['CHILD']) && !empty($ib['CHILD'])){ foreach($ib['CHILD'] as $ibfCH){ $optionsHTML .= '<option value="' . $ibfCH['ID'] . '"' . ($value["VALUE"] == $ibfCH['ID'] ? ' selected' : '') . '> <b> . [' . $ibfCH['ID'] . ']</b> ' . $ibfCH['NAME'] . '</option>'; //Второй уровень if(isset($ibfCH['CHILD']) && !empty($ibfCH['CHILD'])){ foreach($ibfCH['CHILD'] as $ibsCH){ $optionsHTML .= '<option value="' . $ibsCH['ID'] . '"' . ($value["VALUE"] == $ibsCH['ID'] ? ' selected' : '') . '> <b> . . [' . $ibsCH['ID'] . ']</b> ' . $ibsCH['NAME'] . '</option>'; //Третий уровень if(isset($ibsCH['CHILD']) && !empty($ibsCH['CHILD'])){ foreach($ibsCH['CHILD'] as $ibtCH){ $optionsHTML .= '<option value="' . $ibtCH['ID'] . '"' . ($value["VALUE"] == $ibtCH['ID'] ? ' selected' : '') . '> <b> . . . [' . $ibtCH['ID'] . ']</b> ' . $ibtCH['NAME'] . '</option>'; //Четвёртый уровень if(isset($ibtCH['CHILD']) && !empty($ibtCH['CHILD'])){ foreach($ibtCH['CHILD'] as $ibfoCH){ $optionsHTML .= '<option value="' . $ibfoCH['ID'] . '"' . ($value["VALUE"] == $ibfoCH['ID'] ? ' selected' : '') . '> <b> . . . . [' . $ibfoCH['ID'] . ']</b> ' . $ibfoCH['NAME'] . '</option>'; //Пятый уровень } } } } } } } } } unset($sectionLinc); return '<select name="'.$strHTMLControlName["VALUE"].'">'.$optionsHTML.'</select>'; } |