Forked from mesilov/SetIBlockAdminListDisplaySettings.php
Created
October 1, 2018 14:17
-
-
Save ASDAFF/4fb471b6123f9ff404b98c4b0fb85368 to your computer and use it in GitHub Desktop.
Программная настройка столбцов списка элементов ИБ в админке инфоблоков для bitrix
This file contains 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