웹마스터 팁

원본글 : http://sejin7940.co.kr/index.php?mid=xe_tips&document_srl=19264&page=1
제 사이트의 글을 퍼온거기에 말이 짧습니다. 양해 부탁드립니다.

----------------------------------------------------------------

지난 1년 여간은 저도 이 소스를 이용해서  이 기능 원하는 경우 고쳐주었는데.
아예 이번에  이 기능을 그대로 구현한 애드온으로 만들었기에   (애드온을 배포할지 Market 에 내놓을지 확실치가 않네요) 
이 소스는 반대로 배포해드립니다 ^^;;
 

커뮤니티 나 신규 사이트의 경우..  조회수를 증가시키고 픈 경우가 많이 생긴다.
그러나, XE자체에서는  자기글은 아예 안 되고 남의 글도 한번만 조회수 증가가 가능하다
(IP 자체로 막고 있기에.. 원책적으로는 방법이 없다.)


아래의 소스는  일반유저에게는 조회수 횟수 제한 풀고,  한번클릭시마다 1씩 올라가고
관리자의 경우는 조회수가 10씩 올라가는 소스이다. 조회수 횟수제한을 풀고
(추가로 끝에 적어둔걸 이용하면   고정된 값이 아니라 랜덤하게 증가시킬 수도 있다)

 

1.  modules/document/document.controller.php 에서

        function updateReadedCount(&$oDocument) {  에서

 

            // 조회수 업데이트가 되면 trigger 호출 (after)
            $output = ModuleHandler::triggerCall('document.updateReadedCount', 'after', $oDocument);
            if(!$output->toBool()) return $output;
            // session에 정보로 조회수를 증가하였다고 생각하면 패스
            if($_SESSION['readed_document'][$document_srl]) return false;

            // 글의 작성 ip와 현재 접속자의 ip가 동일하면 패스
            if($document->ipaddress == $_SERVER['REMOTE_ADDR']) {
                $_SESSION['readed_document'][$document_srl] = true;
                return false;
            }

            // document의 작성자가 회원일때 글쓴이와 현재 로그인 사용자의 정보가 일치하면 읽었다고 판단후 세션 등록하고 패스
            if($member_srl && $logged_info->member_srl == $member_srl) {
                $_SESSION['readed_document'][$document_srl] = true;
                return false;
            }

            // 조회수 업데이트
            $args->document_srl = $document_srl;
            $output = executeQuery('document.updateReadedCount', $args);


전체를 주석처리하고..

하단에 기재


            // 권한 체크
            $oModuleModel = &getModel('module'+ ');
            $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl);
            $grant = $oModuleModel->getGrant($module_info, Context::get('logged_info'));


     // 조회수 업데이트
            $args->document_srl = $document_srl;
           if($grant->manager) $output = executeQuery('document.updateReadedCount10', $args);
            else $output = executeQuery('document.updateReadedCount', $args);

 

2.   modules/document/queries/updateReadedCount10.xml  추가

<query id="updateReadedCount10" action="update">
    <tables>
        <table name="documents" />
    </tables>
    <columns>
        <column name="readed_count" var="readed_count" default="plus(10)" />
    </columns>
    <conditions>
        <condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" />
    </conditions>
</query>

 

3.  (추가사항)   만약.. 조회수를 랜덤으로 변하게 하고프면.

  1번 소스중에서 끝부분을 아래처럼 바꿔주면 됩니다.
  
  $args->document_srl = $document_srl;
  $hits = rand(6,10);
  if($grant->manager) $output = executeQuery('document.updateReadedCount'.$hits, $args);
  else $output = executeQuery('document.updateReadedCount', $args);

 
   그리고   modules/document/queries/updateReadedCount6.xml ~ modules/document/queries/updateReadedCount10.xml 
   plus() 값만 살짝 바꿔서 추가하면 됩니다 ^^

제목 글쓴이 날짜
노프레임 홈만들기 (2) - 로그인, 최근게시물 설치 [31] file @kihwa 2003.07.26
노프레임 홈만들기 (3) - 서브 페이지 만들고 제로보드에 적용하기 [27] file @kihwa 2003.07.26
이미지2장으로 홈페이지만들기 [5] Conz 2003.08.01
이미지2장으로 홈페이지만들기 2탄 [3] Conz 2003.08.01
<TD>에 스크롤바 생성하기!! [12] millth 2003.08.04
[나모] iframe창에서 다른 iframe창으로 링크걸기, 전체창으로 링크하기 [1] 김병희 2003.08.06
홈페이지에 배경 음악 항상 흐르게 하기 (숨김프레임) [5] 마이템플릿 2003.08.13
테이블의 세로정렬 [4] clo 2003.08.20
[re] 벅스뮤직 음악을 페이지의 배경 음악으로 깔기 (간단) [3] 윤혜성 2003.12.26
벅스뮤직 음악을 페이지의 배경 음악으로 깔기 (수정 #1) [31] file 토끼군 2003.08.20
스크롤바 왼쪽에 위치하도록 하기(문서 뒤집힘 없음) [6] 행복한고니 2003.08.22
[동영상] 테이블태그의 쉽고 확실한 이해와 원프레임 만들기 [30] 비행소년™ 2003.08.27
노프레임 홈페이지에서 상하좌우에 원하지 않는 간격이 생길때... [9] file PHASE 2003.09.08
[동영상] 제로보드의 주요기능들을 적용한 웹사이트 만들기 1-10장 [51] 비행소년™ 2003.09.16
마우스 커서에 대해서... [16] file impre 2003.09.20
해상도에 따라 레이어 위치 바뀌는 것 고정하기 [13] 김형준 2003.10.04
IFRAME 삽입 [20] 박종익 2003.10.10
링크에 마우스 오버 할때 상태표시줄에 원하는 글 뜨게하기 [6] siche 2003.11.26
Input AccessKey를 이용한 홈페이지 단축키 사용하기 [8] Juny. 2003.12.12
스크롤바 색상을 아름답게. [17] file 해리포터포에버 2003.12.16