Skip to content

Instantly share code, notes, and snippets.

@mesilov
Created August 23, 2012 20:13
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save mesilov/3441084 to your computer and use it in GitHub Desktop.
Save mesilov/3441084 to your computer and use it in GitHub Desktop.
Программная настройка столбцов списка элементов ИБ в админке инфоблоков для bitrix
/**
* Настройка столбцов списка элементов ИБ в админке инфоблоков
*
* @param integer $IBlockID — ID инфоблока
* @param string $arIBlockListAdminColumns — символьные коды полей и свойств для показа в списке элементов ИБ
* @param string $orderByColumnName — наименования поля или свойства по которому нудно отсортировать
* @param string $orderDirection - направление сортировки
* @param integer $pageSize - количество элементов на страницу
* @param boolean $isToAllUsers - значение будет для всех, или для текущего пользователя
* @return boolean
*/
function SetIBlockAdminListDisplaySettings($IBlockID, $arIBlockListAdminColumns, $orderByColumnName, $orderDirection, $pageSize, $isToAllUsers = TRUE)
{
// по ID инфоблока получить его тип
$IBlockType = CIBlock::GetArrayByID($IBlockID, 'IBLOCK_TYPE_ID');
if(FALSE == $IBlockType)
{
return FALSE;
}
// и все его свойства
$arPropertyCode = array();
$obProperties = CIBlockProperty::GetList(array("sort"=>"asc"), array("IBLOCK_ID"=>$IBlockID));
while($arProp = $obProperties->GetNext(true, false)) {
$arPropertyCode[$arProp['CODE']] = $arProp['ID'];
}
// пройти по массиву для показа и заменить CODE на PROPERTY_ID свойства
$arColumnList = array();
foreach($arIBlockListAdminColumns as $columnCode)
{
if(TRUE == array_key_exists($columnCode, $arPropertyCode))
{
$arColumnList[] = 'PROPERTY_'.$arPropertyCode[$columnCode];
}
else
{
$arColumnList[] = $columnCode;
}
}
$columnSettings = implode(',',$arColumnList);
// выставляем поля в списке
$arOptions[] = array(
'c' => 'list',
'n' => "tbl_iblock_list_".md5($IBlockType.".".$IBlockID),
'v' => array(
'columns'=> strtoupper($columnSettings),
'by'=> strtoupper($orderByColumnName),
'order'=> strtoupper($orderDirection),
'page_size' => $pageSize
),
);
if(TRUE == $isToAllUsers)
{
$arOptions[0]['d']='Y';
}
CUserOptions::SetOptionsFromArray($arOptions);
}// end of SetIBlockAdminListDisplaySettings
@dermanov-ru
Copy link

да, крутяк. странно, что нет из коробки.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment