XE Tips 는 제가 XE 공홈에 쓴 XE 관련 유용한 팁들입니다. 기능개선은 공홈에 안 적어둔 XE 유용 개선팁들입니다.
유용정보는 외부 검색을 통해 알아낸 소스등을 기재해둔 곳입니다.
버그 신고내역들은 XE 사용하다가 발견한 버그 패치방법들로, Core Issue 에 기록해뒀기에 XE 에 적용이 되었을 가능성이 있겠죠
제가 쓴 글들에 대해 퍼가실때는 꼭 출처를남겨주시고.. (다만 플래시뷰 기반이기에 퍼가기는조금 힘들 수 있겠죠 ^^;)
타회원의 글들도 적혀있는 출처를 같이 꼭 기재해주세요
출처 | sejin7940 |
---|
지난 1년 여간은 저도 이 소스를 이용해서
이 기능 원하는 경우 고쳐주었는데.
아예 이번에 이 기능을 그대로 구현한 애드온으로 만들었기에..
(애드온을 배포할지 Market 에 내놓을지 확실치가 않네요)
이 소스는 반대로 배포해드립니다 ^^;;
--------------------------------------------
커뮤니티 나 신규 사이트의 경우.. 조회수를 증가시키고 픈 경우가 많이 생긴다.
그러나, XE자체에서는 자기글은 아예 안 되고 남의 글도 한번만 조회수 증가가 가능하다
(IP 자체로 막고 있기에.. 원책적으로는 방법이 없다.)
그런데, 이걸 풀어달라는 요청을 많이 받아서.. 해당 소스를 공개하면..
아래의 소스는 일반유저에게는 조회수 횟수 제한 풀고, 한번클릭시마다 1씩 올라가고
관리자의 경우는 조회수가 10씩 올라가는 소스이다. 조회수 횟수제한을 풀고
(추가로 끝에 적어둔걸 이용하면 고정된 값이 아니라 랜덤하게 증가시킬 수도 있다)
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);
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>
**************************** 추가
만약.. 조회수를 랜덤으로 변하게 하고프면.
$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 까지 추가하면 됨
질문 있습니다. 똑같이 했는데, 에러가 나는데요.
혹시 게시판 레이아웃이 xe official 게시판에서만 적용되는지요?