묻고답하기
게시물의 첨부된 첨부파일 각각의 썸네일을 가져오는법이 있나요?
2014.05.14 03:15
현재는 게시물당 한개의 썸네일밖에 가져오지 못하는데, 게시물에 첨부된 전체 사진들의 썸네일을 가져올 수 있는 방법이 있나요?
댓글 13
-
애니즌
2014.05.14 03:27
-
애니즌
2014.05.14 03:29
// Find an iamge file among attached files if exists
if($this->get('uploaded_count')) {
$oFileModel = &getModel('file');
$file_list = $oFileModel->getFiles($this->document_srl);
if(count($file_list)) {
foreach($file_list as $file) {
if($file->direct_download!='Y') continue;
if(!preg_match("/\.(jpg|png|jpeg|gif|bmp)$/i",$file->source_filename)) continue;$source_file = $file->uploaded_filename;
if(!file_exists($source_file)) $source_file = null;
else break;
}
}
}요 부분과
if($source_file){
$output = FileHandler::createImageFile($source_file, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type);
}
if($is_tmp_file) FileHandler::removeFile($source_file);
// Return its path if a thumbnail is successfully genetated
if($output) return $thumbnail_url;요 부분을 파일수 만큼 반복문을 돌리면 되지 않을까... 추정만 해봅니다.
-
mAKEkr
2014.05.14 03:30
아무래도 코어뜯는거 아니면 힘든거군요 ㅠㅠ 감사합니다.. 스킨 내에 자체적으로 썸네일 생성기 만들어야겠네요.
-
애니즌
2014.05.14 03:33
짧은 지식으론.. . 기존 썸네일을 생성하는 함수의 경우 document_srl을 받아서
거기서 파일이 있는 것 중에 파일이 있으면(이미지)
아마 첫번째 파일을 섬네일을 생성하는.. 뭐 그런 식인 것 같습니다.
따라서 말씀처럼 애드온이나 별도로 썸네일을 만드는 방법으로... 처리해야 하지 않을까 합니다.
-
#혼마 메이코
2014.05.14 03:37
저도... 완벽하지는 않지만
getUploadedFiles()=>$key,$file
foreach 를 통해 이미지 확장자라고 판단되면 섬네일을 생성하는게 될 것 같기도 합니다.
(근데 이걸 이용해서 이상한 섬네일을 생성시킨다던가 트래픽 유도하는 악용 문제도 생각되네요...)
-
애니즌
2014.05.14 03:38
근데 잘은 모르지만 파일정리하면 싹다 날라가지 않을까요?
썸네일은 캐쉬로 저장되는 거라 상관 없나..;'ㅇ;
-
#혼마 메이코
2014.05.14 03:40
섬네일은 캐시로 저장되니 정리하면 날아가는게 맞긴 합니다.
근데 혹시모를 이상한 방식으로 침투하는 게 하루이틀인가요 ㅋㅋ..ㅜㅜ
-
애니즌
2014.05.14 03:42
건들면 건들수록 어려운 XE입니다..ㅡ..ㅜ
흐아 자야하는데 쉽게 손을 못놓고 있네요..ㅋㅋ
아까 이미지레이지로드애드온에도 문제가 있었고..(지금은 해결해서 업데이트했지만..)
정규식 요놈만 잘 만질 수 있으면 많은 도움이 될텐데.. 아직까지 이해를 못하고 있으니..(그래서 인터넷에서 찾아서 짜깁기 하다보니 깔끔하지가..ㅠㅠ)
-
#혼마 메이코
2014.05.14 03:43
주변에 정규식 잘쓰는 분이 계셔서 엄청 선망하지만... 물어볼때마다 답변은
네가 찾아서 해야지
라서...정규식 어렵죠 ㅜㅜ preg_replace...으...고통스럽네요
-
애니즌
2014.05.14 03:47
ㅋㅋㅋ 그 답변 알 것 같아요 느낌 아니까 ㅋㅋ
정규식이 참 매력적인 녀석인데 요놈을 정복하지 못하니까...
참으로 답답하더라구요... ㅋㅋ
-
#혼마 메이코
2014.05.14 03:49
이것 이상의 답변은 자제해야겠네요
일단 본론으로 돌아가 섬네일은 문서에서 파일목록을 가져오셔서 foreach를 이용해 확장자명을 알아내고...(이게 될진 모르겠네요)
각각 파일이 이미지 헤더를 가지고 있으면 섬네일을 생성하도록 하시면 될 듯...
-
애니즌
2014.05.14 03:53
이건 제가 게시판에다가 구현해놓은 건데요
{@ $oUploadFile_list = $oDocument->getUploadedFiles(); } <!--@foreach($oUploadFile_list as $key => $file)--> <!--@if(preg_match("/\.(jpg|png|jpeg|gif|bmp)$/i",$file->uploaded_filename)--> <img src="{$file->uploaded_filename};"/> <!--@end--> <!--@end-->
이렇게 하면 해당 게시물에 있는 이미지가 다 불러와집니당.중간에 이미지 체크했고...(이미지 체크는 지금 그냥 추가한거라.. 제대로 되는지는..)
-
애니즌
2014.05.14 04:07
<?php $file_list = $oDocument->getUploadedFiles(); $width = "100"; $height = "100"; $thumbnail_type = "crop"; $thumbnail_path = sprintf('files/cache/thumbnails/%s',getNumberingPath($oDocument->document_srl, 3)); $thumbnail_file = sprintf('%s%dx%d.%s.jpg', $thumbnail_path, $width, $height, $thumbnail_type); $thumbnail_url = Context::getRequestUri().$thumbnail_file; if(count($file_list)) { foreach($file_list as $file) { if($file->direct_download!='Y') continue; if(!preg_match("/\.(jpg|png|jpeg|gif|bmp)$/i",$file->source_filename)) continue; $source_file = $file->uploaded_filename; if(!file_exists($source_file)) $source_file = null; if($source_file){ $output = FileHandler::createImageFile($source_file, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type); } } } ?>
대충 이런 느낌이지 않을까....(되는 지는 모름..ㄷㄷ)
우선 썸네일은 기본적으로 한 개 밖에 생성이 안되기 때문에...
./modules/document/document.item.php
668번 째 줄에 있는 function getThumbnail($width = 80, $height = 0, $thumbnail_type = '') {
~~~~~~~~
}
요놈을 뜯어고쳐야 할겁니다.