Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- * вывод картинок из папки
- [[GalleryFolder? &dir=`assets/galleries/[*id*]/` &tpl=`gallery-tpl` &tpl_outer=`gallery-outer-tpl` &limit=`5`]]
- доступные параметры:
- * id
- * excludeID - список ID документов, на которых сниппет не должен работать(передать &id)
- * sortDir(name,rand)
- * sortBy
- * limit
- * tpl_outer (чанк-обертка, доступен только плейсхолдер [[+wrapper]])
- * tpl ([[+name]],[[+size]])
- */
- //костыль в обход phx
- if(isset($excludeID)){
- $excludeID = explode( ',', $excludeID);
- if(in_array($id,$excludeID)) return;
- }
- $filetip = array('jpg', 'JPG', 'png', 'PNG', 'gif', 'GIF');
- if (!isset($tpl)) {
- echo 'Error! не указан чанк';
- return;
- }
- $limit = isset($limit) ? $limit : 0;
- $tpl_outer = isset($tpl_outer) ? $tpl_outer : false;
- $sortDir = isset($sortDir) ? $sortDir : 'name';
- $sortBy = isset($sortBy) ? $sortBy : 'ASC';
- $base_path = $modx->getOption("base_path");
- //проверяем существование директории
- if (!is_dir($dir))
- return 'Error! directory does not exist.';
- $diri = new DirectoryIterator($base_path . $dir);
- $i = 1;
- $txt = '';
- $arPicture = array();
- foreach ($diri as $file) {
- $path_info = pathinfo($file);
- $ext = @$path_info['extension'];
- if ($file->isFile() and ($file->getSize() > 0) and in_array($ext, $filetip)) {
- switch ($sortDir) {
- case 'name':
- $sortArray[$i] = $file->getFilename();
- break;
- case 'rand':
- $sortArray[$i] = $i;
- break;
- /* case 'time':
- $sortArray[$i] ;
- break; */
- }
- $arPicture[$i] = array(
- 'name' => $dir . $file->getFilename(),
- //'time'=>$file->getCTime(),
- 'size' => $file->getSize(),
- );
- if ($i == $limit) {
- break;
- }
- $i++;
- }
- }
- // SORT
- switch ($sortDir) {
- case 'name':
- if($sortBy=='ASC'){
- asort($sortArray);
- }else{
- arsort($sortArray);
- }
- break;
- case 'rand':
- //array_rand($sortArray);
- shuffle($sortArray);
- $sortArray = array_flip($sortArray);
- break;
- /* case 'time':
- $sortArray[$i] = '';
- break; */
- }
- foreach ($sortArray as $key=>$value) {
- $txt.= $modx->parseChunk($tpl, $arPicture[$key], '[[+', ']]');
- }
- // если есть обертка
- if ($tpl_outer) {
- $arArray2 = array('wrapper' => $txt);
- $txt = $modx->parseChunk($tpl_outer, $arArray2, '[[+', ']]');
- }
- return $txt;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement