아래는 게시판 스킨 파일 일부입니다.

업로드된 파일을 보여주는 부분입니다.

$oDocument->getUploadedFiles() 에 해당 게시물에 포함된 파일의 정보가 들어오는데
저는 이것을 실제 파일명 순서로 sort 하여 보여주고싶습니다.

이 스킨 파일 내에서 작동하도록 만들려면 어떻게 해야하나요 ?

 

        <div cond="$oDocument->hasUploadedFiles()" class="fileList">

            <button type="button" class="toggleFile" onclick="jQuery(this).next('ul.files').toggle();"><i class="xi-diskette"></i> {$lang->uploaded_file} [<strong>{$oDocument->get('uploaded_count')}</strong>]</button>

            <ul class="files">

                <li loop="$oDocument->getUploadedFiles()=>$key,$file"><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} <span class="fileSize">[File Size:{FileHandler::filesize($file->file_size)}/Download:{number_format($file->download_count)}]</span></a></li>

            </ul>

  • Lv19

    $oDocument->getUploadedFiles()이 object들의 배열로 이뤄진 변수여서 조금 복잡합니다.

    usort 함수가 먹히면 간단하겠지만 스킨 파일에서는 중괄호를 쓰는 게 어려움이 많아서요.

     

    0. 아래 처럼 되어 있는 파일 목록을 바꿔보겠습니다.

    스크린샷 2024-11-10 161857.png

     

    1. 우선 <li loop="$oDocument->getUploadedFiles()=>$key,$file"> 위에 아래와 같이 넣어줍니다.

                {@
                    $sorted_file_list = json_decode(json_encode($oDocument->getUploadedFiles()), true);
                    $source_filename  = array_column($sorted_file_list, 'source_filename');
                    array_multisort($source_filename, SORT_ASC, $sorted_file_list);
                    $sorted_file_list = json_decode(json_encode($sorted_file_list), false);
                }

     

    2. 그리고 <li loop="$oDocument->getUploadedFiles()=>$key,$file">은 <li loop="$sorted_file_list=>$key,$file">으로 바꿔줍니다.

     

    3. 엥, 안 복잡하네요?

     

    4. 다음과 같이 마무리되었습니다.

    스크린샷 2024-11-10 162056.png

  • Lv19 Lv36
    템플릿 v2에서는 중괄호 사용이 자유로우니, 첨부파일 목록 조작하는 부분만 별도의 .blade.php 파일로 만들어서 인클루드한다면 코드가 훨씬 깨끗해질 것 같아요. ㅎㅎ
  • Lv36 Lv19
    저는 새로운 거 배우기는 글렀어요ㅜ
    v2 문법은 다음 분께 패스합니다;;;
  • Lv19 Lv1
    너무 감사합니다.
  • Lv36 Lv1
    기진곰 님 너무 감사합니다.