[XE] 카운터스킨에 총게시물수, 댓글수,파일수등을 나타내는 방법
다육이랑 미니랑에서 보여지는 카운터위젯에서 출력되는 이미지입니다. 위 이미지처럼 문서,댓글,파일등 추가적으로 카운터에 출력시키는 방법이며 개인 취향에따라 폰트색상,크기등을 수정하셔서 사용하면 됩니다.
1. 기본 카운터 스킨에 코드를 먼저 추가하셔야 합니다.
widgets/counter_status/counter_status.class.php 열고
<?php
/**
* @class counter_status
* @author NHN (developers@xpressengine.com)
* @version 0.1
* @brief Display counter status by using data in the counter module
**/
class counter_status extends WidgetHandler {
/**
* @brief Widget execution
* Get extra_vars declared in ./widgets/widget/conf/info.xml as arguments
* After generating the result, do not print but return it.
**/
function proc($args) {
// Get status of the accumulated, yesterday's, today's counts
$oCounterModel = &getModel('counter');
$site_module_info = Context::get('site_module_info');
$output = $oCounterModel->getStatus(array('00000000', date('Ymd', time()-60*60*24), date('Ymd')), $site_module_info->site_srl);
foreach($output as $key => $val) {
if(!$key) Context::set('total_counter', $val);
elseif($key == date("Ymd")) Context::set('today_counter', $val);
else Context::set('yesterday_counter', $val);
}
// ----------------------------------------------------------------------------------------------------------
// 젠체글수 댓글수 파일수 등 today 출력하려면 아래 코드가 들어가야한다.
$args->date = date("Ymd000000", time()-60*60*24);
$today = date("Ymd");
// 전체글수
$output = executeQueryArray("admin.getDocumentStatus", $args);
if($output->data) {
foreach($output->data as $var) {
if($var->date == $today) {
$status->document->today = $var->count;
} else {
$status->document->yesterday = $var->count;
}
}
}
$output = executeQuery("admin.getDocumentCount", $args);
$status->document->total = $output->data->count;
Context::set('start_module', $output->data);
Context::set('status', $status);
// 전체 댓글수
$output = executeQueryArray("admin.getCommentStatus", $args);
if($output->data) {
foreach($output->data as $var) {
if($var->date == $today) {
$status->comment->today = $var->count;
} else {
$status->comment->yesterday = $var->count;
}
}
}
$output = executeQuery("admin.getCommentCount", $args);
$status->comment->total = $output->data->count;
Context::set('start_module', $output->data);
Context::set('status', $status);
// 첨부파일수
$output = executeQueryArray("admin.getFileStatus", $args);
if($output->data) {
foreach($output->data as $var) {
if($var->date == $today) {
$status->file->today = $var->count;
} else {
$status->file->yesterday = $var->count;
}
}
}
$output = executeQuery("admin.getFileCount", $args);
$status->file->total = $output->data->count;
Context::set('start_module', $output->data);
Context::set('status', $status);
// ----------------------------------------------------------------------------------------------------------
// Set a path of the template skin (values of skin, colorset settings)
$tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
Context::set('colorset', $args->colorset);
// Specify a template file
$tpl_file = 'counter_status';
// Compile a template
$oTemplate = &TemplateHandler::getInstance();
return $oTemplate->compile($tpl_path, $tpl_file);
}
}
?>
위에 빨간색부분을 추가합니다. 특히 주의하셔야할 내용은 아래 핑크색 코드가 꼭 들어가야 합니다. 이 코드가 들어가지 않으면 오늘입력된 내용 즉 오늘글,댓글,파일등이 0 으로 표기가 됩니다.
$args->date = date("Ymd000000", time()-60*60*24);
$today = date("Ymd");
(빨간색 추가 코드에 보시면 최 상위에 입력되어 있는게 보이실거에요)
2. 자신의 카운터 스킨폴더에서 적용할 파일을 열어서 출력할 내용을 입력
widgets/counter_status/skins/mamgood_counter2/counter_status.html 열고
(경로는 개인마다 사용하시는 스킨에 따라 틀리나 counter_status.html 파일은 동일합니다.)
<!--%import("./css/widget.css")-->
<div id="store_counter_today"><span>{number_format($today_counter->unique_visitor)+250}</span></div>
<div id="store_counter_yesterday">어제 : {number_format($yesterday_counter->unique_visitor)+250}<br>
전체방문자 : {number_format($total_counter->unique_visitor)}<br />
문서:{number_format($status->document->total)}(+{number_format($status->document->today)})
댓글:{number_format($status->comment->total)}(+{number_format($status->comment->today)})
파일:{number_format($status->file->total)}(+{number_format($status->file->today)})
</div>
빨간색 부분을 추가해줍니다. (다육이랑 미니랑에서 추가한 내용입니다.)
회원 : {number_format($status->member->total)}
신규회원 : {number_format($status->member->today)}
문서 : {number_format($status->document->total)}
신규문서 : {number_format($status->document->today)}
댓글 : {number_format($status->comment->total)}
신규댓글 : {number_format($status->comment->today)}
엮인글 : {number_format($status->trackback->total)}
신규엮인글 : {number_format($status->trackback->today)}
첨부파일 : {number_format($status->file->total)}
신규첨부파일 : {number_format($status->file->today)}
전체 페이지뷰 : {number_format($total_counter->pageview)}
오늘페이지뷰 : {number_format($today_counter->pageview)}
어제 페이지뷰: {number_format($yesterday_counter->pageview)}
위 코드를 출력하고자 하는곳에 추가 입력해서 출력하셔도 됩니다.
3. 가입회원및 신규회원을 출력하고자 할경우
$oMemberModel = &getModel('member');
$output = executeQueryArray("admin.getMemberStatus", $args);
if($output->data) {
foreach($output->data as $var) {
if($var->date == $today) {
$status->member->today = $var->count;
} else {
$status->member->yesterday = $var->count;
}
}
}
$output = executeQuery("admin.getMemberCount", $args);
$status->member->total = $output->data->count;
Context::set('start_module', $output->data);
Context::set('status', $status);
위 코드를 추가로 삽입하신 후
widgets/counter_status/skins/mamgood_counter2/counter_status.html 열고
(경로는 개인마다 사용하시는 스킨에 따라 틀리나 counter_status.html 파일은 동일합니다.)
<td class="number center">{number_format($status->member->yesterday)}</td>어제 가입자
<td class="number center">{number_format($status->member->today)}</td>오늘 가입자
<td class="number center">{number_format($status->member->total)}</td>전체 가입자
위 빨간색 코드를 삽입하시면 됩니다.
출처 : 닷플, 직접입력