партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Универсальная галерея - модуль для битрикс
Работа с элементами и коллекциями медиабиблиотеки продуктов 1С-Битрикс осуществляется с помощью двух классов функций - CMedialibItem и CMedialibCollection, но сначала необходимо инициализировать медиабиблиотеку с помощью функции CMedialib::Init:[spoiler]

CModule::IncludeModule("fileman");

CMedialib::Init();

Работа с коллекциями медиабиблиотеки


Получение списка коллекций

CModule::IncludeModule("fileman");

CMedialib::Init();
// получим список всех коллекций
$arCollections CMedialibCollection::GetList(array('arOrder'=>Array('NAME'=>'ASC'),'arFilter' => array('ACTIVE' => 'Y')));
Если же нужно получить дерево коллеций, т.е. массив, отсортированный в соответствии с вложенностью, то можно воспользоваться следующей функцией, которая работает рекурсивно:

class MedialibCollectionTools {

   function 
GetRecursive($collection_id=0,&$arCollections,$arOrder,$arFilter) {
      
$arFilterTmp=$arFilter;
      
$arFilterTmp["PARENT_ID"] = $collection_id;
      
$rsCollections CMedialibCollection::GetList(array('arOrder'=>$arOrder,'arFilter' => $arFilterTmp));
      foreach(
$rsCollections as $arCollection) {
         
$arCollections[] = $arCollection;
         
self::GetRecursive($arCollection["ID"],&$arCollections,$arOrder,$arFilter);
      }
   }
}

$arCollections = Array();
$collection_id 0// ID основной коллекции, для полного дерева коллекций указываем 0
MedialibCollectionTools::GetRecursive($collection_id,$arCollections,Array('NAME'=>'ASC'),Array('ACTIVE' => 'Y'));
// Теперь в масиве arCollections находится дерево коллекций

Добавление или обновление коллекции

CModule::IncludeModule("fileman");

CMedialib::Init();

$arFields = Array (
   
"arFields" => 
   Array (
      
"ID" => 0// ID коллекции для обновления, 0 для добавления новой
      
"NAME" => "Название коллекции"// название
      
"DESCRIPTION" => "Описание коллекции"// описание
      
"OWNER_ID" => "1"// ID пользователя
      
"PARENT_ID" => 1// ID родительской коллекции
      
"KEYWORDS" => "Слово 1, Слово 2"// ключевые слова
      
"ACTIVE" => "Y"// активность
      
"ML_TYPE" => "1"// тип коллекции, по умолчанию: 1 - изображения, 2 - видео, 3 - аудио
   
),
);

$COLLECTION_ID CMedialibCollection::Edit($arFields); // функция возвращает ID коллекции

Работа с элементами (файлами) медиабиблиотеки

Получение списка элементов

CModule::IncludeModule("fileman");

CMedialib::Init();
// получим все элементы коллекции с идентификатором 1
$arItems CMedialibItem::GetList(array('arCollections' => array("0" => 1)));

Добавление или обновление элемента

CModule::IncludeModule("fileman");

CMedialib::Init();

$arFields = array (
   
"file" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/preview_picture_5.jpg"), // файл
   
"path" => false// путь
   
"arFields" => 
   Array (
      
"ID" => 0// ID элемента для обновления, 0 для добавления
      
"NAME" => "preview_picture_5.jpg"// название файла
      
"DESCRIPTION" => "Описание картинки"// описание файла
          
"KEYWORDS" => "Слово 1, Слово 2"// ключевые слова
   
),
   
"arCollections" => Array (1,2), // коллекции, которым принадлежит файл
);

$arItem CMedialibItem::Edit($arFields); // функция возвращает массив, описывающий элемент коллекции

Пример массива, возвращаемого функцией CMedialib::Edit в случае успешного добавления элемента

Array

(
    [
ID] => 8
    
[TIMESTAMP_X] => 11.06.2013 00:01:52
    
[MODULE_ID] => fileman
    
[HEIGHT] => 130
    
[WIDTH] => 354
    
[FILE_SIZE] => 45197
    
[CONTENT_TYPE] => image/jpeg
    
[SUBDIR] => medialibrary/c7a
    
[FILE_NAME] => 2shop_2.jpg
    
[ORIGINAL_NAME] => 2shop_2.jpg
    
[DESCRIPTION] => Описание картинки
    
[HANDLER_ID] => 
    [~
src] => 
    [
THUMB_PATH] => /upload/resize_cache/medialibrary/c7a/140_105_1/2shop_2.jpg
    
[TYPE] => image
    
[PATH] => /upload/medialibrary/c7a/2shop_2.jpg
    
[NAME] => preview_picture_5.jpg
    
[KEYWORDS] => Слово 1Слово 2
    
[~DATE_UPDATE] => now()
    [
SEARCHABLE_CONTENT] => {PREVIEW}{PICTUR}{JPG}{ОПИСАН}{КАРТИНК}{СЛОВ}
    [
SOURCE_ID] => 10
    
[~DATE_CREATE] => now()
)

Работа с типами содержимого медиабиблиотеки


Получение всех типов содержимого

CModule::IncludeModule("fileman");

$arTypes CMedialib::GetTypes();

Если типы содержимого не изменялись в настройках модуля "Управление структурой", то функция вернет следующее:

Array

(
    [
0] => Array
        (
            [
id] => 1
            
[code] => image
            
[name] => Изображения
            
[ext] => jpg,jpeg,gif,png
            
[system] => 1
            
[desc] => Фотографиикартинкииконкирисунки и другие графические файлы
            
[type_icon] => /bitrix/images/fileman/medialib/type_image.gif
            
[empty] => 
        )

    [
1] => Array
        (
            [
id] => 2
            
[code] => video
            
[name] => Видео
            
[ext] => flv,mp4,wmv
            
[system] => 1
            
[desc] => Видеофайлы
            
[type_icon] => /bitrix/images/fileman/medialib/type_video.gif
            
[empty] => 1
        
)

    [
2] => Array
        (
            [
id] => 3
            
[code] => sound
            
[name] => Аудио
            
[ext] => mp3,wma,aac
            
[system] => 1
            
[desc] => Аудиофайлы
            
[type_icon] => /bitrix/images/fileman/medialib/type_sound.gif
            
[empty] => 1
        
)

)

Чтобы оставить сообщение, авторизуйтесь, или войдите с помощью:
22.07.2019 12:09:39
сильно
its cool