웹마스터 팁
위젯 페이지 또는 메인 페이지에서 게시판 첨부파일 바로 다운로드 할 수 있도록 만들기
2013.05.10 10:51
이전에 이런 팁이 있는지 모르겠지만, 제가 한참 고민해서 만든 것을 공유하고자 합니다.
위젯페이지나 메인페이지에서 최신글 목록에서 곧바로 첨부파일을 다운로드 할 수 있는 팁입니다.
먼저 widgets/content/content.class.php 파일에서 아래부분을 찾습니다.
class contentItem extends Object {
var $browser_title = null;
var $has_first_thumbnail_idx = false;
var $first_thumbnail_idx = null;
var $contents_link = null;
var $domain = null;
---------------------------------------------- <- 여기에 아래 있는 함수들을 첨가합니다.
function getDownloadUrl($file_srl, $sid) {
return sprintf('?module=%s&act=%s&file_srl=%s&sid=%s', 'file', 'procFileDownload', $file_srl, $sid);
}
function getFiles($upload_target_srl, $columnList = array(), $sortIndex = 'file_srl', $ckValid = false) {
$args->upload_target_srl = $upload_target_srl;
$args->sort_index = $sortIndex;
if($ckValid) $args->isvalid = 'Y';
$output = executeQuery('file.getFiles', $args,$columnList);
if(!$output->data) return;
$file_list = $output->data;
if($file_list && !is_array($file_list)) $file_list = array($file_list);
$file_count = count($file_list);
for($i=0;$i<$file_count;$i++) {
$file = $file_list[$i];
$file->source_filename = stripslashes($file->source_filename);
$file->download_url = $this->getDownloadUrl($file->file_srl, $file->sid);
$file_list[$i] = $file;
}
return $file_list;
}
function getUploadedFiles() {
if(!$this->get('uploaded_count')) return;
$oFileModel = &getModel('file');
$file_list = $oFileModel->getFiles($this->get('document_srl'), array(), 'file_srl', true);
return $file_list;
}
그리고 해당 위젯 파일에 넣고 싶은 부분에 아래부분을 첨가합니다.
<!--@foreach($item->getUploadedFiles() as $key => $file)-->[<a href="{getUrl('')}{$file->download_url}">Download</a>]<!--@end-->
만일 여러 첨부파일중에서 가장 먼저 올려진 첨부파일 하나만 링크하고자 한다면, 아래와 같이 입력하면 될 듯 싶습니다. 이거는 테스트 안 해봤습니다.
{@$idx=0}<!--@foreach($item->getUploadedFiles() as $key => $file)--><!--@if($idx==0)-->[<a href="{getUrl('')}{$file->download_url}">Download</a>]<!--@end-->{$idx++}<!--@end-->
[Download]부분에 파일명이 나오게 하고 싶으시면,
[Download] -> [{$file->source_filename}] 로 바꾸시면 됩니다.
도움이 되었으면 좋겠습니다.