웹마스터 팁

원본글 : 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() 값만 살짝 바꿔서 추가하면 됩니다 ^^

제목 글쓴이 날짜
조회수 제한 풀고, 조회수 증가값을 더 크게 하는 소스 [7] sejin7940 2011.08.21
조회수 클릭때마다 올라가기(1.4.5.7 버전에서 되네요) [2] file 아네모네 2011.06.20
게시판에 회원확장변수정보 받아서 표시하기 [3] burster 2011.03.26
게시판모듈 글목록에서 분류명(카테고리)를 이미지로 표현하기 [4] nalireco 2011.01.06
sh명령어를 이용한 웹사이트 관리 김동욱 2004.08.09
한컴 리눅스 2.2 apach php mysql phpmyadmin zeroboard 서버구축기 예전에 쓴글 약간 수정판 입니다. [6] 한돌 2003.05.19
트래픽관리 Throttle-status 사용자 인증시키기 [1] Cksoft 2003.03.18
PHP_9_My-sql함수를 이용한 프로그램_1 아무흐 2008.07.15
PHP에 입문하시는 분들을 위해 적어봅니다. [5] 특급잠수부 2008.04.26
관리자모드 - 관리자그룹만 모든 회원리스트보기 [2] 이지혜609 2007.10.23
포인트부여시 ...회원로그인 [2] 구본순 2007.08.28
나만의 미니홈 만들기 ㅡ 간단한 최근글 불러오기 [6] 예뜨락 2005.05.09
나만의 미니홈 만들기 ㅡ password.php [8] file 예뜨락 2005.05.07
나만의 미니홈 만들기 ㅡ delete.php 파일 [2] 예뜨락 2005.01.03
나만의 미니홈 만들기 ㅡ write.php 파일과 write_ok [5] 예뜨락 2004.11.30
나만의 미니홈 만들기 ㅡ view.php 파일과 제목링크 [9] file 예뜨락 2004.11.27
나만의 미니홈 만들기 ㅡ list.php , 디비 테이블 생성 [6] file 예뜨락 2004.11.26
나만의 미니홈 만들기 ㅡ 미니홈 생성 페이지 [3] file 예뜨락 2004.11.20
나만의 미니홈 만들기 ㅡ 기초적인 관리 페이지 [3] file 예뜨락 2004.11.20
나만의 미니홈 만들기 ㅡ 메인 기초 설계3 .레이아웃 [2] file 예뜨락 2004.11.19