웹마스터 팁

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

제목 글쓴이 날짜
(CSS) IE8용 웹조각 기능 file Simulz 2009.03.26
XE위키 모듈: 숫자 문서의 짧은 주소 문제와 미디어위키 문법 사용시 내부링크 문제 해결하기 Gunmania 2016.02.12
가상사이트 페이지별 개별 레이아웃 적용하기 Xiso 2016.01.31
warning: call time pass by reference 에러 해결 방법 [6] ezi 2011.07.28
리눅스 10원짜리 팁 - history 명령어 응용 paraduxx 2016.01.12
리눅스 10원짜리 팁 - 탭 키 쓰십니까 ? paraduxx 2016.01.12
회원가입폼 기본항목에 안내문구 넣기 paraduxx 2016.01.11
XE와 마인크래프트 서버 화이트리스트 연동하기 [9] file 연가시먹었다 2012.08.25
일반 게시판에서 익명 선택하여 작성하기 [2] POWERXE 2015.12.27
메뉴활성화에 따라 원하는 위치에 레이어 넣고 바꾸기.. 왼쪽 플래시 메뉴 메뉴따라서 바꾸기 [4] 만쓰별(정만) 2009.01.24
비밀글 이여도 갤러리나 웹진형에서, 썸네일이나 요약 부분이 나타나게 수정하려면.. sejin7940 2015.12.23
상단에 스르르~ 닫기 가능한 배너 달기 [30] file 야옹잉 2014.06.20
빠른 글 쓰기: 메인 페이지에서 글 쓰기 [1] file 윈컴이 2015.12.09
통합검색 기능에 권한 적용하기 (완전 차단 필요할 때) [9] file 모노소프트 2012.04.30
관리자만 볼 수 있는 로그인 기록 페이지 만들기 퍼니엑스이 2015.12.07
rsync 와 ssh root 접속을 막고 인증키로만 백업하기 마루디자인 2015.11.25
리눅스 백업 1.0 ibin 2015.11.23
이제는 유튜브동영상 손쉽게 다운로드 받으세요 ミ:つÞ [7] 딴죽을거는남자 2015.11.02
파시ㅇ 예제입니다. [3] file 유창화 2015.11.12
CentOS PHP TS/NTS 모드 설치 방법 마루디자인 2015.11.09