Как настроить и работать с компонентом Gallery через административную часть MODX, вы можете ознакомится c нашей статьей. В этой статье мы расмотрим как создать альбом с изображениями и привязки созданого альбома к ресурсу.
Считаем, что компонент Gallery у нас установлен. Создадим TV-параметр c названием "tv-gallery", выбираем "galerryalbumlist" во вкладке "Параметры ввода". На вкладке "доступно для шаблонов" отмечаем нужные шаблоны. В данных шаблонах разместим простейшую форму:
<form method="post" enctype="multipart/form-data">
<input type="file" name="fileUpload[]" multiple>
<button type="submit" name="submit" value="save"></button>
</form>
Теперь создадим сниппет и назовем его galleryHandler. Это будет наш обработчик формы, разместим его в шаблонах где мы разместили нашу HTML форму, выше формы.
<?php
$action = (isset($_POST['submit']))? $_POST['submit'] : '';
switch($action) {
case "save":
//получаем ресурс в виде объекта
$item = $modx->getObject('modResource',array(
'id' => $modx->resource->id,
));
if(!$item){
break;
}
$resourceID = $response->response['object']['id'];
//Галлерея-создание
$responseGallery = $modx->runProcessor('mgr/album/create',
array(
'name' => $resourceID,
'parent' => 4,
'active' => 1,
'prominent' => 1,
),
array(
'processors_path' => $modx->getOption('core_path') . 'components/gallery/processors/',
)
);
$galleryID = $responseGallery->response['object']['id'];
//Назначаем галллерею
$item = $modx->getObject('modResource',array(
'id' => $resourceID,
));
if($item){
$item->setTVValue(49, $galleryID);
}
//Заливка файлов
foreach($_FILES['fileTmp']['name'] as $k => $v){
$validextensions = array("jpeg", "jpg", "png");
$temporary = explode(".", $_FILES['fileTmp']['name'][$k]);
$file_extension = end($temporary);
if ((($_FILES['fileTmp']['type'][$k] == "image/png") || ($_FILES['fileTmp']['type'][$k] == "image/jpg") || ($_FILES['fileTmp']['type'][$k] == "image/jpeg")) && in_array($file_extension, $validextensions)) {
$_FILES['file']['name'] = $_FILES['fileTmp']['name'][$k];
$_FILES['file']['type'] = $_FILES['fileTmp']['type'][$k];
$_FILES['file']['tmp_name'] = $_FILES['fileTmp']['tmp_name'][$k];
$_FILES['file']['error'] = $_FILES['fileTmp']['error'][$k];
$_FILES['file']['size'] = $_FILES['fileTmp']['size'][$k];
$file = $_FILES['fileTmp']['name'][$k];
$arrFileInfo = pathinfo($file);
$fileName = $modx->runSnippet('fileTranslit', array(
'fileName' => $arrFileInfo['filename'],
));
$fileName = rand(10000, 99999).'_'.$fileName.'.'.$arrFileInfo['extension'];
$responseGalleryItems = $modx->runProcessor('mgr/item/upload',
array(
'album' => $galleryID,
'active' => 1,
'name' => $fileName,
),
array(
'processors_path' => $modx->getOption('core_path') . 'components/gallery/processors/',
)
);
}
}
$modx->sendRedirect($modx->makeUrl($modx->resource->id, '', array(
'code' => 'ok',
)));
/*mkdir('img/catalog/'.$resourceID);
//Закачиваем файл
if(isset($_FILES["file"]["type"])){
$validextensions = array("jpeg", "jpg", "png");
$temporary = explode(".", $_FILES["file"]["name"]);
$file_extension = end($temporary);
if ((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/jpeg")) && ($_FILES["file"]["size"] < 1000000) && in_array($file_extension, $validextensions)) {
if ($_FILES["file"]["error"] == 0) {
$file = $_FILES['file']['name'];
$arrFileInfo = pathinfo($file);
$fileTranlit = $modx->runSnippet('fileTranslit', array(
'fileName' => $arrFileInfo['filename'],
));
$fileTranlit = rand(10000, 99999).'_'.$fileTranlit.'.'.$arrFileInfo['extension'];
$sourcePath = $_FILES['file']['tmp_name'];
$targetPath = 'img/catalog/'.$resourceID.'/'.$fileTranlit;
if(move_uploaded_file($sourcePath, $targetPath)){
//Прописываем в TV
$item = $modx->getObject('modResource',array(
'id' => $resourceID,
));
if($item){
$item->setTVValue(24, $resourceID.'/'.$fileTranlit);
}
}
}
}
}*/
$modx->sendRedirect($modx->makeUrl($modx->resource->id, '', array(
'code' => 'ok',
)));
break;
}