Created
August 23, 2012 20:13
-
-
Save mesilov/3441084 to your computer and use it in GitHub Desktop.
Программная настройка столбцов списка элементов ИБ в админке инфоблоков для bitrix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Настройка столбцов списка элементов ИБ в админке инфоблоков | |
* | |
* @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 |
да, крутяк. странно, что нет из коробки.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Максим, спасибо! Заюзали! :)