Q&A

 

현재 게시판은 XE2007 에서 블로그 형태를 사용하고 있습니다.

목록이 따로 있지 않고 내용물이 출력되는 형식입니다.

 

비회원의 경우 최근 n일간의 게시물만 읽게 하고 싶습니다. 

만약 3일 제한이라면 최근 3일 내에 작성된 글은 읽을 수 있지만 그 이전에 쓰여진 글은

"비회원은 최근 3일 이내에 작성된 글만 읽을 수 있습니다." 라고 노출을 하게끔요...

글 열람권한을 로그인 회원에게 줘버리면 비회원에게는 아예 노출이 되지않을테구요...

 

@if(!$is_logged) 로 회원/비회원 여부를 구분하면 될텐데

그 외에 최근 n일을 제외한 모든 게시글 열람을 막으려면 어떻게 해야할까요?

 

댓글 10

  • 우선 회원 여부 체크뒤 비회원이면 현재 날짜와 글 등록일을 비교해서 3일 이하인 글은 본문을, 3일 이상인 글은 안내문을 출력하면 되겠죠?
    <!--@if(!$is_logged && (time() - $oDocument->getRegdateTime()) > 259200)-->

    [기존 스킨 글 불러오는 부분]

    <!--@else-->
    [안내문 출력]
    <!--@endif-->

     

    게시판 스킨의 글 불러오는 부분에 원래 부분 대신 위 코드를 넣으시면 됩니다. 물론 대괄호 부분은 채워 넣어주셔야 합니다.

    +22:02 수정 - ||가 아니라 &&네요. 이런 실수를...

  • @YJSoft

    댓글 감사합니다. 적용을 해보았지만 안되네요. 소스 한번 봐주실 수 있으신가요? 

     

    view_document.html 파일에서 document 출력 부분 수정 전 코드입니다.

    <!--@if($oDocument->isSecret() && !$oDocument->isGranted())-->
                        <div class="secretContent">
                            <form action="/" method="get" onsubmit="return procFilter(this, input_password)">
                            <input type="hidden" name="mid" value="{$mid}" />
                            <input type="hidden" name="page" value="{$page}" />
                            <input type="hidden" name="document_srl" value="{$oDocument->document_srl}" />

                                <div class="title">{$lang->msg_is_secret}</div>
                                <div class="content"><input type="password" name="password" id="cpw" class="iText" /><input class="btn" type="submit" value="{$lang->cmd_input}" /></div>

                            </form>
                        </div>
                    <!--@else-->
                        {$oDocument->getContent(false)}
                    <!--@end-->

     

     

    남겨주신 댓글을 대괄호 내용만 고쳐서 바꾸었습니다. 기존에 비밀글 권한이 없을 경우 패스워드 폼이 출력되는 부분은 필요 없었기 때문에 그냥 지웠구요.

    <!--@if(!$is_logged || (time() - $oDocument->getRegdateTime()) > 259200)-->
                    {$oDocument->getContent(false)}
                    <!--@else-->
                    비회원은 최근 3일간 작성된 게시글만 열람하실 수 있습니다.
                    <!--@endif-->

     

    확인 결과 비회원일 때도 모든 글은 동일하게 노출됩니다...ㅜㅜ

  • @하버
    원문도 if문이 있는 것 같은데 헷갈리지 않으시도록 해당 구간 전체를 복사해보여주시는 것이 좋지 않을까요?! ㅎㅎ
  • @큰성

    아 그렇군요. 아래는 원문 전체입니다. 

     

    view_document.html

    <!-- display the document contents -->

    <div class="boardRead">
        <div class="originalContent">
            <div class="readHeader">
                <div class="titleAndUser">

                    <div class="title">
                        <a href="{$oDocument->getPermanentUrl()}">{$oDocument->getTitle()}</a>
                    </div>

                    <!--@if($module_info->display_author!='N')-->
                    <div class="userInfo">
                        <!--@if(!$oDocument->getMemberSrl())-->
                            <div class="author">
                            <!--@if($oDocument->isExistsHomepage())-->
                                <a href="{$oDocument->getHomepageUrl()}" onclick="window.open(this.href);return false;">{$oDocument->getNickName()}</a>
                            <!--@else-->
                                {$oDocument->getNickName()}
                            <!--@end-->
                            </div>
                        <!--@else-->
                            <div class="author"><span class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</span></div>
                        <!--@end-->
                    </div>
                    <!--@end-->

                    

                </div>

                <div class="dateAndCount">
                    <div class="uri" title="{$lang->document_url}"><a href="{$oDocument->getPermanentUrl()}">{$oDocument->getPermanentUrl()}</a></div>

                    <div class="date" title="{$lang->regdate}">
                        <strong>{$oDocument->getRegdate('Y년 m월 d일')}</strong> <!--@if($logged_info->is_admin=="Y")-->{$oDocument->getRegdate('H:i:s')}<!--@end-->
                    </div>

                    <!--@if($oDocument->get('voted_count')!=0 || $oDocument->get('blamed_count')!=0)-->
                    <div class="votedCount" title="{$lang->voted_count}">
    <a href="#layer_voted_member" class="voted_member_{$oDocument->document_srl} document votedup">{$oDocument->get('voted_count')}</a> / <a href="#layer_voted_member" class="voted_member_{$oDocument->document_srl} document voteddown">{$oDocument->get('blamed_count')}</a>
                    </div>
                    <!--@end-->

                    <!--@if($module_info->use_category == "Y" && $oDocument->get('category_srl'))-->
                    <div class="category" title="{$lang->category}"><a href="{getUrl('category',$oDocument->get('category_srl'), 'document_srl', '')}">{$category_list[$oDocument->get('category_srl')]->title}</a></div>
                    <!--@end-->

                    
                </div>

                
            </div>

            

            <!--@if($oDocument->isExtraVarsExists() && (!$oDocument->isSecret() || $oDocument->isGranted()) )-->
            <table cellspacing="0" summary="" class="extraVarsList">
            <col width="150" />
            <col />
            <!--@foreach($oDocument->getExtraVars() as $key => $val)-->
            <tr>
                <th>{$val->name}</th>
                <td>{$val->getValueHTML()}</td>
            </tr>
            <!--@end-->
            </table>
            <!--@end-->

            <div class="readBody">
                <div class="contentBody">
                        
                    <!--@if($oDocument->isSecret() && !$oDocument->isGranted())-->
                        <div class="secretContent">
                            <form action="/" method="get" onsubmit="return procFilter(this, input_password)">
                            <input type="hidden" name="mid" value="{$mid}" />
                            <input type="hidden" name="page" value="{$page}" />
                            <input type="hidden" name="document_srl" value="{$oDocument->document_srl}" />

                                <div class="title">{$lang->msg_is_secret}</div>
                                <div class="content"><input type="password" name="password" id="cpw" class="iText" /><input class="btn" type="submit" value="{$lang->cmd_input}" /></div>

                            </form>
                        </div>
                    <!--@else-->
                        {$oDocument->getContent(false)}
                    <!--@end-->

                    <!-- display signature / profile image-->
                    <!--@if($module_info->display_sign != 'N' && ($oDocument->getProfileImage() || $oDocument->getSignature()))-->
                        <div class="memberSignature">
                        <!--@if($oDocument->getProfileImage())-->
                            <div class="profile"><img src="{$oDocument->getProfileImage()}" alt="profile" /></div>
                        <!--@end-->
                        <!--@if($oDocument->getSignature())-->
                            <div class="signature">{$oDocument->getSignature()}</div>
                        <!--@end-->
                            
                        </div>
                    <!--@end-->
                </div>
            </div>

            {@ $tag_list = $oDocument->get('tag_list') }
            <!--@if(count($tag_list))-->
            <div class="tag">
                <ul>
                    <!--@for($i=0;$i<count($tag_list);$i++)-->
                        {@ $tag = $tag_list[$i]; }
                        <li><a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}" rel="tag">{htmlspecialchars($tag)}</a><!--@if($i<count($tag_list)-1)-->, <!--@end--></li>
                    <!--@end-->
                </ul>
            </div>
            <!--@end-->

            <!--@if($oDocument->hasUploadedFiles())-->
            <div class="fileAttached">
                {@ $uploaded_list = $oDocument->getUploadedFiles() }
                <ul>
                    <!--@foreach($uploaded_list as $key => $file)-->
                    <li><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
                    <!--@end-->
                </ul>
                
            </div>
            <!--@end-->
        </div>

        <!-- list, modify/delete button -->
        <div class="btnArea">
            <!--@if($module_info->default_style != 'blog' || ($module_info->default_style == 'blog' && Context::get('document_srl')))-->
            <a id="btn" href="{getUrl('document_srl','')}"><!--@if($module_info->default_style != 'blog')-->{$lang->cmd_list}<!--@else-->{$lang->cmd_view_all}<!--@end--></a>
            <!--@end-->
            <!--@if($oDocument->isEditable())-->
            <a id="btn" href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl,'comment_srl','')}">{$lang->cmd_modify}</a>
            <a id="btn" href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl,'comment_srl','')}"><i class="fa fa-trash-o"></i>{$lang->cmd_delete}</a>
            <!--@end-->
        </div>

    </div>

    <!-- trackback -->
    <!--@if($oDocument->allowTrackback())-->
        <!--#include("./trackback.html")-->
    <!--@end-->
    <a onclick="this.nextSibling.style.display=(this.nextSibling.style.display=='none')?'block':'none';"href="javascript:void(0)"> 
    {$lang->comment}이 <font style="color:#F22613">{$oDocument->getCommentcount()}</font>개 달렸습니다.
    </a><div style="DISPLAY: none"> 
    <!-- comments -->
    <a name="comment"></a>
    <!--#include("./comment.html")-->

    <!-- comments form -->
    <!--@if($grant->write_comment && $oDocument->isEnableComment() )-->
        <form action="/" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" >
        <input type="hidden" name="mid" value="{$mid}" />
        <input type="hidden" name="document_srl" value="{$oDocument->document_srl}" />
        <input type="hidden" name="comment_srl" value="" />
        <input type="hidden" name="content" value="" />
            <div class="boardWrite commentEditor">
                <div class="userNameAndPw">
                    <!--@if(!$is_logged)-->
                    <label for="userName">{$lang->writer}</label>
                    <input type="text" name="nick_name" value="" class="userName iText" id="userName"/>

                    <label for="userPw">{$lang->password}</label>
                    <input type="password" name="password" value="" id="userPw" class="userPw iText" />

                    <label for="emailAddress">{$lang->email_address}</label>
                    <input type="text" name="email_address" value="" id="emailAddress" class="emailAddress iText"/>

                    <label for="homePage">{$lang->homepage}</label>
                    <input type="text" name="homepage" value="" id="homePage" class="homePage iText"/>
                    <!--@else-->
                    <input type="checkbox" name="notify_message" value="Y" id="notify_message" />
                    <label for="notify_message">{$lang->notify}</label>
                    <!--@end-->
                    <!--@if($module_info->secret=="Y")-->
                    <input type="checkbox" name="is_secret" value="Y" id="is_secret" />
                    <label for="is_secret">{$lang->secret}</label>
                    <!--@end-->
                </div>

                <div class="editor">{$oDocument->getCommentEditor()}</div>
            </div>

            <div class="btnArea">
                <input class="btn" type="submit" value="{$lang->cmd_comment_registration}" />
            </div>
        </form>
    <!--@end-->

    </div>

     

  • @하버
    실수가 있어 수정하였습니다. || 가 아니라 && 네요 ㅠ
  • @YJSoft
    && 로 고쳐봤습니다. 비회원일때는 촤근 3일간 작성된 글이 안 보이고 그외에 기간에 작성된 글이 보이구요, 관리자로 로그인했을 때는 모든 글이 안 보이네요...ㅜㅜ php는 문외한인데 어렵네요@_@..
  • @하버
    아.. >도 <로 바꿔주세요. 어째 자꾸 실수를...
  • @YJSoft
    비회원부분은 해결됐습니다! 감사합니다! 그런데 관리자 뿐만 아니라 로그인 회원은 모두 글을 읽을 수가 없네요...ㅜㅜ
  • @하버
    !$is_logged && 를 $is_logged ||
  • @YJSoft
    해결 되었습니다. 감사합니다! 이참에 php를 공부해봐야겠어요! 다시 한번 감사드립니다! 혹시 알려주신 팁을 타 커뮤니티에 올려도 괜찮을까요? 출처는 적어놓겠습니다...