작성글들중 프로그램용량이 큰 자료의 경우 외부에서 파일을 가져와서 링크를 걸어 두었는데

이런 경우는 게시판의 파일권한과 상관 없이 다운로드가 가능했습니다.

그런 이유로 로그인한 회원만 자료를 다운받게 할려고 

글 작성란에 XE의 문법을 사용해 보니 보안상의 이유로 안 된답니다.

https://xetown.com/qna/895519

 

그래서 게시판 확장변수를 이용해서 로그인회원과 비로그인회원을 구별해서 외부자료를 다운받게 만들었습니다.

먼저 sketchbook5 게시판을 이용해서 만들었습니다.

 

스케치북게시판에는 "본문 일반 설정"에 "확장변수 위치"란 설정이 있습니다.

img_001.jpg

기본 게시판 skin.xml 파일안에는 아래와 같이 2개의 선택만이 있습니다.

<var name="et_var" type="radio">
    <title xml:lang="ko">확장변수 위치</title>
    <options value="">
        <title xml:lang="ko">본문 안에(기본)</title>
    </options>
    <options value="2">
        <title xml:lang="ko">제목 아래</title>
    </options>
</var>   

그런데 _read.html 파일안에는 총3군데의 확장변수 위치가 있습니다.

위에 처럼 "본문안에(기본)" 와 "제목아래" 그리고 본문 하단에 한군데가 더 있습니다.

그래서 저는 아래와 같이 수정했습니다.

<var name="et_var" type="radio">
    <title xml:lang="ko">확장변수 위치</title>
    <options value="">
        <title xml:lang="ko">본문 안에(기본)</title>
    </options>
    <options value="1">
        <title xml:lang="ko">제목 아래</title>
    </options>
    <options value="2">
        <title xml:lang="ko">본문 하단</title>
    </options>
</var>

그리고 _read.html 파일안에 코드를 보면 어떤 경우이던 "본문 안에"는 항상 출력됩니다.

그래서 저는 3군데중 지정한 곳만 나오게 수정했습니다.

<!--// Extra Var : Header -->
<table cond="$mi->et_var=='1'

- 생략 - 

<!--// Body -->
<div class="rd_body clear">
  <!--// Extra Var -->
  <block cond="!$mi->extravar_print">
    <table cond="$mi->et_var==''

- 생략 -

<!--// Extra Var : content_footer -->
<block cond="!$mi->extravar_print">
  <table cond="$mi->et_var=='2' 

 

그런 다음 skin.xml 파일안에 로그인한 회원이 다운받을 URL 이 적혀 있는 확장변수의 입력항목이름 부분을 추가하는 설정을 했습니다.

<var name="et_logon_name" type="text">
    <title xml:lang="ko"> ┖ 본문 하단 로그인후 파일 다운 확장변수 입력항목이름</title>
    <description xml:lang="ko">로그인후 파일 다운 확장변수 입력항목이름을 적어주세요.</description>
</var> 

 

그리고 _read.html 파일안에 "본문 하단" 확장변수부분을 아래와 수정합니다.

<!--// Extra Var : content_footer -->
<block cond="!$mi->extravar_print">
    <table cond="$mi->et_var=='2' && $oDocument->isExtraVarsExists() && (!$oDocument->isSecret() || $oDocument->isGranted())" class="et_vars bd_tb">
        <caption class="blind">Extra Form</caption>
        <tr loop="$oDocument->getExtraVars() => $key,$val" cond="$val->getValueHTML() && $val->eid!='rd_preview'">

        

         <!--@if($val->name==$mi->et_logon_name)-->
            <!--@if($logged_info)-->
                <a href="#toggleExtraVars" class="btn">다운로드</a>
                <div id="toggleExtraVars">
                {$val->getValueHTML()}
                </div>
                <script type="text/javascript">
                jQuery.noConflict();
                jQuery(function($){ 
                    $('#toggleExtraVars').hide();
                    $('a[href=#toggleExtraVars]').click(function(){
                        $($(this).attr('href')).toggle();
                        return false;
                    });
                });
                </script>
            <!--@else-->
                <p><a href="#" onclick='javascript:alert("회원가입 로그인후 다운로드가 가능합니다.");'>"회원가입 로그인후 다운로드가 가능합니다"</a></p>
            <!--@end-->
        <!--@else-->

            <th scope="row">{$val->name}</th>
                <td cond="$val->eid!='rating'&&$val->eid!==$mi->etc_name">{$val->getValueHTML()}</td>
                <td cond="$val->eid!='rating'&&($mid==$mi->etc_mid&&$val->eid==$mi->etc_name)">{$mi->f_name} {number_format(str_replace(',','',$val->getValueHTML()))}{$mi->b_name}</td>
                <td cond="$val->eid=='rating'&&$val->eid!==$mi->etc_name" class="rating"><span class="starRating" title="{$val->getValueHTML()}{$lang->score}"><span style="width:{$val->getValueHTML()*10}%">{$val->getValueHTML()}</span></span></td>
        <!--@end-->
        </tr>
    </table>
</block>
 

그럼 게시판 파일수정은 다 되었습니다.

 

게시판 설정의  "사용자 정의"에서 외부파일 다운로드 URL을 작성할 수 있는 확장변수를 하나 만들고 임의의 "입력항목 이름"을 정합니다.(예:다운로드)

img_002.jpg

확장변수를 만든 후 "스킨 관리"에 들어가서 "확장변수 위치"를 본문 하단으로 선택하고

"본문 하단 로그인후 파일 다운 확장변수 입력항목 이름"에 다운로드를 적어줍니다.

img_001.jpg

그럼 모든 설정은 끝이 났습니다.

 

게시글 작성에서 확장변수란에 외부파일 다운로드 경로를 적어주시면 

로그인한 회원은 "다운로드"버턴을 클릭하면 토글로 하단에 다운로드 경로가 보이며,

비로그인한 분은 "회원가입 로그인후 다운로드가 가능합니다"란 문구를 볼 수 있습니다.

 

적용페이지에 가 보시면 어떻게 작동되는지 아실 수 있습니다.

저는 버턴대신 이미지로, pr_tooltip 애드온을 이용했습니다. 

http://moonhouse.co.kr/xe/346150

 

[로그인]

img_003.jpg

[비로그인}

img_004.jpg

  • ?
    스마트 폰에서는 로그인 없이 다운로드 됩니다
  • ? ?
    아직 스마트폰 게시판 스킨은 수정을 하지 않았습니다.^.^
    이제 해야죠~
  • ? ?
    아 그러시군요 근대 너무 잘만들었습니다
    저도 저거으로 적용할려고 합니다
    감사 합니다
  • ? ?
    칭찬은 고래도 춤추게 한다는데~~~
    제가 감사합니다.
    잘 응용해서 사용하세요.
  • ?
    감사합니다!