포럼
으으.. 어렵네요.;;;
2012.12.12 05:13
아래쪽에 보니까..
일베에 있는 실시간 글 알림 관련 글이 보이길래 한번 애드온으로 만들어 보자 싶어서 해봤는데
어렵네요.. ;; 대충 아래 처럼 해봤는데 제대로 데이터가 빠져나오는지 알수가 없네요.;
디버그 사용법좀 찾아봐야겠네요 ;;
newdocument.addon.php
<?php /** * 새글이 등록되어있는지 체크 **/ if($called_position == 'before_display_content') { Context::addJsFile('./addons/newdocument/js/newdocumentdiv.js'); Context::addJsFile('./addons/newdocument/js/newdocument.js'); } if($called_position == 'before_module_init') { $is_document_new = false; $time_interval = 60; $time_check = date("YmdHis", time()-$time_interval); $args->list_count = 1; $args->order_type = 'asc'; $db_output = executeQuery('document.getDocumentList', $args); if(!$db_output->toBool()) continue; if($db_output->data) { foreach($db_output->data as $doc) { if($doc->regdate > $time_check) $is_document_new = true; } } if($is_document_new == true){ print sprintf('{"new_document_chk" : "Y"},{"document_srl" : "%s"},{"document_title" : "%s"}', $request_uri.$doc->document_srl, $doc->title); } } ?>
newdocument.js
jQuery(document).ready(newdocumentchk); function ndc() { setTimeout(newdocumentchk, 10000); } function newdocumentchk() { jQuery.ajax({ url : default_url + 'index.php', dataType : "json", complete : ndc, timeout : 10000, success : function(data) { if(data.new_document_chk == "Y") { $("#ndcLayer").prepend("새로운 글이 올라왔습니다.<br/>제목 : <a href='"+data.document_srl+"' alt=''>"+data.document_title+"</a>"); $("#ndcLayer").show(); } } }); }
newdocumentdiv.js
$(document).ready(function(){ $("body").prepend("<div id='ndcLayer' style='position:absolute;left:0px;top:0px;display:none;width:300px;height:30px;padding:5px;font-size:11px;background:#ffffff;border:2px solid #666666;'></div>"); });
이런식으로 해봤는데 일단 Jquery 쪽 ajax는 갱신이 계속 되는데 데이터가 안들어오는건지.. 표시를 못해주네요 ;;
댓글 10
-
푸시아
2012.12.12 07:35
-
배워서남준다
2012.12.12 09:03
제 나름대로 수정해 보았습니다.
newdocument.addon.php
/**
* 새글이 등록되어있는지 체크
**/
if($called_position == 'before_module_init') {
Context::addJsFile('./addons/newdocument/js/newdocument.js');
$is_document_new = false;
$time_interval = 60*60*24; //24시간
$time_check = date("YmdHis", time()-$time_interval);
$args->list_count = 1;
$args->order_type = 'asc';
$output = executeQueryArray('document.getDocumentList', $args);
if(!count($output->data)) return;
if($output->data)
{
foreach($output->data as $doc)
{
if($doc->regdate > $time_check) $is_document_new = true;
}
}
//관리자에게만...
$logged_info = Context::get('logged_info');if($is_document_new == true&&$logged_info->is_admin=='Y')
{
$docinfo = sprintf('var new_document_chk = "Y", document_srl = "%s", document_title = "%s";', $request_uri.$doc->document_srl, $doc->title);
$addBody = '<script type="text/javascript">'.$docinfo.'</script>';
Context::addBodyHeader($addBody); // body 상단에 등록
}
}
newdocument.js
jQuery(function($){
window.newdocumentchk = function(title,srl){
var $notice = $('<div id="ndcLayer" style="position:absolute;left:0px;top:0px;width:300px;height:30px;padding:5px;font-size:11px;background:#ffffff;border:2px solid #666666;" />') .hide().prependTo(document.body);$notice.html('<p><a href="' + srl +'">'+title+'</a></p>').height();
$notice.slideDown(600).animate({top:0});
setTimeout(function(){$notice.slideUp()}, 10000);
};
newdocumentchk(document_title,document_srl);
});
제가 초보라서 ajax는 아직 학습을 못했는데, 고수분들이 좀더 다듬어 주시길 바랍니다.
-
Canto
2012.12.12 17:43
으으으.. 꼼수로 성공했습니다..
정리해서 댓글로 올려놓을께요 (...)
-
Canto
2012.12.12 18:44
일단 @배워서남준다 님께 감사드립니다. ㅎㅎ
index로 Ajax요청해서 div 요소를 바꿔치는 식으로 해봤는데..
간편하고 좋은 방법이 있을텐데 실력 부족 OTL
newdocument.addon.php
/*
newdocument.addon.php
새글이 등록되어있을 경우를 체크
*/
if($called_position == 'before_module_proc') {
Context::addJsFile('./addons/newdocument/js/newdocument.js');
$is_document_new = false;
$time_interval = 60; //글 체크 주기 초단위
$time_check = date("YmdHis", time()-$time_interval);
$args->list_count = 1;
$args->order_type = 'asc';
$output = executeQueryArray('document.getDocumentList', $args);
if(!count($output->data)) return;
if($output->data)
{
foreach($output->data as $doc)
{
if($doc->regdate > $time_check) $is_document_new = true; //현재 시간으로 부터 1분안에 등록된 글이 있을경우
}
}
$docinfo = sprintf('var new_mid = "%s",new_document_chk = "Y", document_srl = "%s", document_title = "%s";', $current_url,$request_uri.$doc->document_srl, $doc->title);
$addBody = '<script type="text/javascript">'.$docinfo.'</script>';
if($is_document_new == true) $addLayerdiv ='<div id="ndc"><div id="ndcLayer" style="position:fixed;display:block;left:100%;top:100%;margin-top:-50px;margin-left:-330px;width:300px;height:30px;padding:5px;font-size:11px;background:#ffffff;border:2px solid #666666;z-index:10;"><span >게시판에 새로운 글이 등록되었습니다<br/><a style="color:#000000" href='.$doc->document_srl.'>'.$doc->title.'</a> - 작성자 : '.$doc->nick_name.'</span></div></div>';
else $addLayerdiv ='<div id="ndc"><div id="ndcLayer" style="position:fixed;display:none;left:100%;top:100%;margin-top:-50px;margin-left:-330px;width:300px;height:30px;padding:5px;font-size:11px;background:#ffffff;border:2px solid #666666;"><span></span></div></div>';
Context::addBodyHeader($addBody); // body 상단에 등록
Context::addBodyHeader($addLayerdiv);
}
newdocument.js
jQuery(document).ready(newdocumentchk);
function newdocumentchk() {
$("#ndc").load('index.php #ndc > #ndcLayer');
setTimeout(function(){$("#ndcLayer").fadeOut('slow')}, 30000);
setTimeout(newdocumentchk, 60000);
}
-
Canto
2012.12.12 19:28
newdocument.js 에서.;;
$("#ndc").load('index.php #ndc > #ndcLayer');
Ajax로 로드하는 부분에.
index.php?mid=home
이런식으로 mid를 추가시켜 주지 않으면 안되네요.;; 뭐가 문제지 (...)
-
Canto
2012.12.12 19:44
애드온호출 시점 문제였군요.;;
호출시점을 before_module_proc 로 해주니 이젠 index.php 로만으로 괜찮네요 (...)
-
BonaSera
2012.12.17 00:51
혹시...
애드온으로 만들어주시면 정말 좋을 것 같아요... ^^
조심스레 기대해봅니다 ^^
-
Canto
2012.12.20 14:23
일단 운영하는 사이트에서 사용해보고 있는데요 손봐야될 곳이 많은 듯 하여
배포는 늦어질꺼 같네요 ㅠㅠ
-
라르게덴
2012.12.12 19:34
언제 공부한번 할까요? :p -
Canto
2012.12.12 19:40
좋죠 ㅎㅎ
근데 이번달은 바뻐서 ㅠㅠㅠ
다음달이면 괜찮습니다. ㅎㅎ
글쓴이 | 제목 | 최종 글 |
---|---|---|
숭숭군 | 윈7에서 개발하기? [19] | 2012.12.26 by 숭숭군 |
이온디 | 메일 인증이 제대로 안 되네요 [18] | 2012.12.25 by misol |
jungheasung | 홈페이지 주문 제작 요청했는데 사기 당한 것 같습니다. [11] | 2012.12.24 by 엠™ |
꿈틀잉 | 겔러리 형시을 이런식으로 가능한가요? [2] | 2012.12.23 by 젠이 |
컴즈인 | 모바일EX(모바일확장) 0.2 업데이트 [38] | 2012.12.23 by 컴즈인 |
hhgyu | 테스트 부탁드립니다. [4] | 2012.12.21 by 독도2005 |
CMD | Xzet 1.4.5.16 (XE 1.4.x 보안 패치) - 2012/11/22 [9] | 2012.12.21 by 블램블램 |
닉 조성재 | 글 작성시 붙여넣기 문제 | |
Canto | 으으.. 어렵네요.;;; [10] | 2012.12.20 by Canto |
pcdoc | 도움 주세요!! [8] | 2012.12.19 by pcdoc |
Canto | 혹시 xpressengine.org 쪽에 있는 zend_search 사용해보신분 계신가요? [1] | 2012.12.18 by lightnsalt |
Garon | 음... XE 운영, XE 외부 개발자분들의 참여에 대한 생각... [6] | 2020.03.14 by Garon |
컴즈인 | 다운로드 자료 등록신청은 언제 이루어지는건가요? [5] | 2012.12.17 by CMD |
2donggalbi | XE를 개선하려면 어떻게 해야할까요 [5] | 2020.03.14 by BNU |
우냠냠냠 | 메일 인증부분말이에요 [2] | 2012.12.16 by CM(OEZ) |
라미아스튜디오 | xe로 만들어진 웹게임, 다들 알고계시나요? [4] | 2012.12.16 by 퍼니엑스이 |
이온디 | 1.6은 어디로 갔을까요? [7] | 2012.12.16 by 우냠냠냠 |
SCAC | 쉬운설치는 문제있는거 맞죠? [3] | 2012.12.15 by Garon |
이온디 | XE 사용자 메뉴얼은 어디에 있나요? [4] | 2012.12.15 by 이온디 |
오늘도가자11 | cafeXE 로그인창 문의 |
왜 called_position 을 두개로 쓰죠?
컨텐츠 보일때 js 파일 호출하고 모듈 초기화할때 나머지를 호출하는 특별한 이유가 있나요?