Advertisement
Guest User

Untitled

a guest
Feb 25th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.76 KB | None | 0 0
  1. <?php
  2. /*
  3.  * вывод картинок из папки
  4.  
  5. [[GalleryFolder? &dir=`assets/galleries/[*id*]/` &tpl=`gallery-tpl` &tpl_outer=`gallery-outer-tpl` &limit=`5`]]
  6.  
  7.     доступные параметры:
  8.  *      id
  9.  *      excludeID  - список ID документов, на которых сниппет не должен работать(передать &id)
  10.  *      sortDir(name,rand)
  11.  *      sortBy
  12.  *      limit
  13.  *      tpl_outer (чанк-обертка, доступен только плейсхолдер [[+wrapper]])
  14.  *      tpl ([[+name]],[[+size]])
  15.  */
  16.  
  17.  
  18. //костыль в обход phx
  19. if(isset($excludeID)){
  20.    $excludeID = explode( ',', $excludeID);
  21.    if(in_array($id,$excludeID)) return;
  22. }
  23. $filetip = array('jpg', 'JPG', 'png', 'PNG', 'gif', 'GIF');
  24. if (!isset($tpl)) {
  25.     echo 'Error! не указан чанк';
  26.     return;
  27. }
  28. $limit = isset($limit) ? $limit : 0;
  29. $tpl_outer = isset($tpl_outer) ? $tpl_outer : false;
  30. $sortDir = isset($sortDir) ? $sortDir : 'name';
  31. $sortBy = isset($sortBy) ? $sortBy : 'ASC';
  32.  
  33. $base_path = $modx->getOption("base_path");
  34. //проверяем существование директории
  35. if (!is_dir($dir))
  36.     return 'Error! directory does not exist.';
  37.  
  38. $diri = new DirectoryIterator($base_path . $dir);
  39.  
  40. $i = 1;
  41. $txt = '';
  42. $arPicture = array();
  43. foreach ($diri as $file) {
  44.     $path_info = pathinfo($file);
  45.     $ext = @$path_info['extension'];
  46.     if ($file->isFile() and ($file->getSize() > 0) and in_array($ext, $filetip)) {
  47.         switch ($sortDir) {
  48.             case 'name':
  49.                 $sortArray[$i] = $file->getFilename();
  50.                 break;
  51.             case 'rand':
  52.                 $sortArray[$i] = $i;
  53.                 break;
  54.             /* case 'time':
  55.               $sortArray[$i] ;
  56.               break; */
  57.         }
  58.         $arPicture[$i] = array(
  59.             'name' => $dir . $file->getFilename(),
  60.             //'time'=>$file->getCTime(),
  61.             'size' => $file->getSize(),
  62.         );
  63.         if ($i == $limit) {
  64.             break;
  65.         }
  66.         $i++;
  67.     }
  68. }
  69. // SORT
  70. switch ($sortDir) {
  71.     case 'name':
  72.         if($sortBy=='ASC'){
  73.             asort($sortArray);
  74.         }else{
  75.             arsort($sortArray);
  76.         }
  77.         break;
  78.     case 'rand':
  79.         //array_rand($sortArray);
  80.         shuffle($sortArray);
  81.         $sortArray = array_flip($sortArray);
  82.         break;
  83.     /* case 'time':
  84.       $sortArray[$i] = '';
  85.       break; */
  86. }
  87. foreach ($sortArray as $key=>$value) {
  88.     $txt.= $modx->parseChunk($tpl, $arPicture[$key], '[[+', ']]');
  89. }
  90. // если есть обертка
  91. if ($tpl_outer) {
  92.     $arArray2 = array('wrapper' => $txt);
  93.     $txt = $modx->parseChunk($tpl_outer, $arArray2, '[[+', ']]');
  94. }
  95.  
  96. return $txt;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement