[QUOTE]andreya пишет:
Мда. Есть же пример уже, дальше немножечко головы и вперед по аналогии...
[QUOTE]Ginner пишет:
он короче все все-таки отображает, только пишет Select, а OPTION - уже нет... [/QUOTE]
А откуда опшинам взяться? Что и откуда там должно вдруг появиться?
Делаем проще, шаблон не трогаем, помодифицируем $arResult (пример на коленке, поэтому тестируйте/правьте сами).
Итак, копируем папку с дефолтным шаблоном компоненты в нужный шаблон сайта, создаем в папке файл result_modifier.php (что это такое - по ссылке в моем предыдущем сообщении) c примерно следующим содержимым:
[CODE]<?
//получаем информацию о нужном свойстве (если их много и нужна унификация - то можно пройтись циклом по всем свойствам типа "Е", указанным в настройках компоненты)
$dbProp = CIBlockProperty::GetById('PROP_CODE', $arParams['IBLOCK_ID']);
if ($arProp = $dbProp->GetNext())
{
//заменяем тип "Е" на тип "L", чтобы сработала соотв. ветка шаблона компоненты, отображающая select
$arProp['PROPERTY_TYPE'] = 'L';
//получаем список элементов, которые должны отображаться в комбобоксе (можно использовать в качестве iblock-code значение $arProp['LINK_IBLOCK_ID'], использовать нужные фильтры, если не все элементы нужны в комбобоксе)
$dbAllElements = GetIBlockElementListEx('iblock-type','iblock-code',false,Array("SORT"=>"ASC"), 0, Array(), array('ID','NAME'));
//первым элементом ставим пустое значение, если нужно, чтобы можно было ничего не выбирать)
$arAllElements = array(''=>array('VALUE'=>'Выберите:'));
//загоняем полученные значения в массив
while($arElement = $dbAllElements->Fetch())
{
$arAllElements[$arElement['ID']] = array('VALUE'=>$arElement['NAME']);
}
//записываем полученный массив в 'ENUM'
$arProp['ENUM'] = $arAllElements;
//добавляем наше свойство к уже существующим свойствам в $arResult
$arResult['PROPERTY_LIST_FULL'][$arProp['ID']] = $arProp;
if (!in_array($arProp['ID'], $arResult["PROPERTY_LIST"]))
$arResult["PROPERTY_LIST"][] = $arProp['ID'];
}
?>[/CODE]
..и наслаждаемся результатом
Пробуйте....[/QUOTE]
А мне не помогло. Я сделал как в примере. Свойство строю, но не выводится результат на экране. Так и не появиличь элементы из привязки.
<?
if (CModule::IncludeModule("iblock"))
{
//получаем информацию о нужном свойстве (если их много и нужна унификация - то можно пройтись циклом по всем свойствам типа "Е", указанным в настройках компоненты)
$dbProp = CIBlockProperty::GetById("Metro_Moscow", $arParams['IBLOCK_ID']);
if ($arProp = $dbProp->GetNext())
{
$arProp['PROPERTY_TYPE'] = 'L';$arProp['~PROPERTY_TYPE'] = 'L';//print_r($arProp);
//получаем список элементов, которые должны отображаться в комбобоксе (можно использовать в качестве iblock-code значение $arProp['LINK_IBLOCK_ID'], использовать нужные фильтры, если не все элементы нужны в комбобоксе)
$dbAllElements = GetIBlockElementListEx('dopinfo',$arProp['LINK_IBLOCK_ID'],false,Array("SORT"=>"ASC"), 0, Array(), array('ID','NAME'));
//первым элементом ставим пустое значение, если нужно, чтобы можно было ничего не выбирать
$arAllElements = array(''=>array('VALUE'=>'Выберите:'));
//загоняем полученные значения в массив
while($arElement = $dbAllElements->Fetch())
{
$arAllElements[$arElement['ID']] = array('ID'=>$arElement['ID'],'VALUE'=>$arElement['NAME']);
}
//записываем полученный массив в 'ENUM'
$arProp['ENUM'] = $arAllElements;
//добавляем наше свойство к уже существующим свойствам в $arResult
$arResult['PROPERTY_LIST_FULL'][$arProp['ID']] = $arProp; //echo$arProp['ID']."<br/>";print_r($arResult);//echo"$arProp['ID']<br/>"; print_r($arResult['PROPERTY_LIST_FULL'][$arProp['ID']]);
if (!in_array($arProp['ID'], $arResult["PROPERTY_LIST"]))
$arResult["PROPERTY_LIST"][] = $arProp['ID'];
}
}
?>
case "L":
case "E":
добавлено все как положено, но нихт вобла. Даже пиво не помагает.
Не могли подсказать, что не так?