블로그처럼 보기 정보
그누호환 블로그처럼 보기본문
여기 올라온 팁들을 짜맞춰서 그룹별 게시물 미리보기로 마치 블로그처럼 해본 것입니다. 이틀째 삽질하다가 겨우겨우 해냈습니다. 일단은 게시물 미리보기가 원칙이라서 게시물이 HTML 일 경우는 제대로 동작하지 않습니다만- 조금만 고치면 되는 부분이니까요. 그룹별 미리보기가 스킨화 된다면 상당히 괜찮겠다는 생각이 드네요. 관리자님, 공식적으로 만들어주실 생각없으신가요? ^^
다음 내용을 파일로 저장해서 불러보세요.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
define("_DOCTYPE_", "DESIGN");
$html_title = "그룹별 미리보기";
include "./lib/latest.lib.php";
?>
<?
// BLOG처럼 보이기
$groupname = '불러올 그룹이름'; // 그룹이름
$limit = 10; // 뽑을 글 수
$cut_subject = 65; // 자를 제목 글자수
$cut_content = 300; // 자를 내용 글자수
// TEMPORARY TABLE MAKE
$tmp_make = mysql_query("create temporary table tmp (
bo_table varchar(20) NOT NULL default '',
bo_subject varchar(255) NOT NULL default '',
wr_id int(11) NOT NULL auto_increment,
ca_id int(11) NOT NULL default '0',
wr_notice tinyint(4) NOT NULL default '0',
wr_num int(11) NOT NULL default '0',
wr_reply varchar(5) NOT NULL default '',
wr_parent_id int(11) NOT NULL default '0',
wr_comment int(11) NOT NULL default '0',
wr_commentcnt int(11) NOT NULL default '0',
wr_html tinyint(4) NOT NULL default '0',
wr_secret tinyint(4) NOT NULL default '0',
wr_recv_email tinyint(4) NOT NULL default '0',
wr_subject varchar(255) NOT NULL default '',
wr_content text NOT NULL,
wr_link1 varchar(255) NOT NULL default '',
wr_link2 varchar(255) NOT NULL default '',
wr_link1_hit int(11) NOT NULL default '0',
wr_link2_hit int(11) NOT NULL default '0',
wr_file1 varchar(255) NOT NULL default '',
wr_file2 varchar(255) NOT NULL default '',
wr_file1_source varchar(255) NOT NULL default '',
wr_file2_source varchar(255) NOT NULL default '',
wr_file1_download int(11) NOT NULL default '0',
wr_file2_download int(11) NOT NULL default '0',
wr_hit int(11) NOT NULL default '0',
wr_good int(11) NOT NULL default '0',
wr_nogood int(11) NOT NULL default '0',
mb_id varchar(20) NOT NULL default '',
wr_passwd varchar(16) NOT NULL default '',
wr_name varchar(20) NOT NULL default '',
wr_email varchar(255) NOT NULL default '',
wr_homepage varchar(255) NOT NULL default '',
wr_datetime datetime NOT NULL default '0000-00-00 00:00:00',
wr_ip varchar(15) NOT NULL default '',
wr_user_agent varchar(255) NOT NULL default '',
wr_update_datetime datetime NOT NULL default '0000-00-00 00:00:00',
wr_update_ip varchar(15) NOT NULL default '',
wr_update_user_agent varchar(255) NOT NULL default '',
PRIMARY KEY (wr_id),
KEY index1 (wr_notice,wr_num,wr_reply),
KEY index2 (wr_num,wr_parent_id),
KEY index3 (wr_datetime)
)");
// 게시판 환경 설정 테이블에서 각 게시판 BOARD 가져오기
$sql = " select a.bo_subject, a.bo_table, b.gr_subject
from $cfg[table_board] a, $cfg[table_group] b
where a.gr_id = b.gr_id AND b.gr_id = '$groupname'
order by b.gr_id, a.bo_table ";
$result = sql_query($sql);
$테이블수 = mysql_num_rows($result);
$sql_limit = intval($limit/$테이블수) + 3;
// BOARD 별로 게시판 돌면서 검색한다
while($row = mysql_fetch_array($result)) {
$tbl = "{$cfg[write_table_prefix]}{$row[bo_table]}";
$sql2 = " select a.wr_id,
a.wr_parent_id,
a.mb_id,
a.wr_name,
a.wr_email,
a.wr_num,
a.wr_subject,
a.wr_content,
a.wr_comment,
a.wr_commentcnt,
a.wr_datetime,
b.mb_icon
from $tbl a left join $cfg[table_member] b on (a.mb_id = b.mb_id)
where a.wr_comment = 0
order by a.wr_id desc
limit $sql_limit";
$result2 = sql_query($sql2);
// 검색 결과를 TEMPORARY 테이블에 집어 넣는다.
for ($i = 0; $row2 = mysql_fetch_array($result2); $i++) {
if ($row2[wr_comment] > 0) {
$sql3 = " select wr_subject
from $tbl
where wr_comment = 0 and wr_parent_id = '$row2[wr_parent_id]' ";
$row3 = sql_fetch_array($sql3);
$wr_subject = $row3[wr_subject];
} else {
$wr_subject = $row2[wr_subject];
}
sql_query("INSERT tmp SET
bo_table = '$row[bo_table]',
bo_subject = '$row[bo_subject]',
ca_id = '$row2[ca_id]',
wr_notice = '$row2[wr_notice]',
wr_num = '$row2[wr_num]',
wr_reply = '$row2[wr_reply]',
wr_parent_id = '$row2[wr_parent_id]',
wr_comment = '$row2[wr_comment]',
wr_commentcnt = '$row2[wr_commentcnt]',
wr_html = '$row2[wr_html]',
wr_secret = '$row2[wr_secret]',
wr_recv_email = '$row2[wr_recv_email]',
wr_subject = '".get_text(cut_str($wr_subject,$cut_subject,'…'))."',
wr_content = '".get_text(cut_str($row2[wr_content],$cut_content,'…'))."',
wr_link1 = '$row2[wr_link1]',
wr_link2 = '$row2[wr_link2]',
wr_link1_hit = '$row2[wr_link1_hit]',
wr_link2_hit = '$row2[wr_link2_hit]',
wr_file1 = '$row2[wr_file1]',
wr_file2 = '$row2[wr_file2]',
wr_file1_source = '$row2[wr_file1_source]',
wr_file2_source = '$row2[wr_file2_source]',
wr_file1_download = '$row2[wr_file1_download]',
wr_file2_download = '$row2[wr_file2_download]',
wr_hit = '$row2[wr_hit]',
wr_good = '$row2[wr_good]',
wr_nogood = '$row2[wr_nogood]',
mb_id = '$row2[mb_id]',
wr_passwd = '$row2[wr_passwd]',
wr_name = '".get_text(cut_str($row2[wr_name],12))."',
wr_email = '$row2[wr_email]',
wr_homepage = '$row2[wr_homepage]',
wr_datetime = '$row2[wr_datetime]',
wr_ip = '$row2[wr_ip]',
wr_user_agent = '$row2[wr_user_agent]',
wr_update_datetime = '$row2[wr_update_datetime]',
wr_update_ip = '$row2[wr_update_ip]',
wr_update_user_agent = '$row2[wr_update_user_agent]'
");
}
mysql_free_result($result2);
}
mysql_free_result($result);
// TEMPORARY 테이블 정보 가져오기
$result = sql_query("SELECT * FROM tmp ORDER BY wr_datetime DESC LIMIT $limit");
?>
<?
// 보여주기
if(mysql_num_rows($result) != 0) {
while($row = mysql_fetch_assoc($result)) {
$comment = "";
$atag_comment = "";
if ($row[wr_comment] > 0) {
$comment = "<span style='font-size:8pt;'>[c]</span> ";
$atag_comment = "#c{$row[wr_id]}";
}
$commentcnt = "";
if ($row[wr_commentcnt] > 0)
$commentcnt = "<font size=-2>({$row[wr_commentcnt]})</font>";
$wr_name = gblayer($row[mb_id], $row[wr_name], $row[wr_email]);
?>
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#AAAAAA">
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="lat_sub" height="20"> <a href='<?="./$cfg[index]?doc=$cfg[bbs_dir]/gnuboard.php&bo_table=$row[bo_table]"?>'><?=$row[bo_subject]?></a> :
<a href='<?="./$cfg[index]?doc=$cfg[bbs_dir]/gnuboard.php&bo_table=$row[bo_table]&wr_id=$row[wr_parent_id]"?>'><?=$row[wr_subject]?></a> <?=$list[$i][icon_new]?></td>
</tr>
<tr>
<td height="12" align="right" bgcolor="#EEEEEE"><span class='11px'>
<? echo "$mb_icon$wr_name$admin_icon" ?> @ <font color=gray>[<?=$row[wr_datetime]?>]</font> </span></td>
</tr>
<tr>
<td align="right" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td><?=$row[wr_content]?></td>
</tr>
</table>
<span class='10px'><a href='<?="./$cfg[index]?doc=$cfg[bbs_dir]/gnuboard.php&bo_table=$row[bo_table]&wr_id=$row[wr_parent_id]"?>'>자세히...</a><? if($list[$i][commentcnt]) { ?> | 코멘트 수 : <? echo $list[$i][commentcnt]; }?>
</span> </td>
</tr>
</table></td>
</tr>
</table><BR>
<? }
} else echo "등록된 글이 없습니다.";
?>
<?
mysql_free_result($result);
mysql_query("DROP TABLE tmp");
/*// 실행시간 측정
$run_time = get_microtime() - $begin_time;
echo($run_time); */
?>
다음 내용을 파일로 저장해서 불러보세요.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
define("_DOCTYPE_", "DESIGN");
$html_title = "그룹별 미리보기";
include "./lib/latest.lib.php";
?>
<?
// BLOG처럼 보이기
$groupname = '불러올 그룹이름'; // 그룹이름
$limit = 10; // 뽑을 글 수
$cut_subject = 65; // 자를 제목 글자수
$cut_content = 300; // 자를 내용 글자수
// TEMPORARY TABLE MAKE
$tmp_make = mysql_query("create temporary table tmp (
bo_table varchar(20) NOT NULL default '',
bo_subject varchar(255) NOT NULL default '',
wr_id int(11) NOT NULL auto_increment,
ca_id int(11) NOT NULL default '0',
wr_notice tinyint(4) NOT NULL default '0',
wr_num int(11) NOT NULL default '0',
wr_reply varchar(5) NOT NULL default '',
wr_parent_id int(11) NOT NULL default '0',
wr_comment int(11) NOT NULL default '0',
wr_commentcnt int(11) NOT NULL default '0',
wr_html tinyint(4) NOT NULL default '0',
wr_secret tinyint(4) NOT NULL default '0',
wr_recv_email tinyint(4) NOT NULL default '0',
wr_subject varchar(255) NOT NULL default '',
wr_content text NOT NULL,
wr_link1 varchar(255) NOT NULL default '',
wr_link2 varchar(255) NOT NULL default '',
wr_link1_hit int(11) NOT NULL default '0',
wr_link2_hit int(11) NOT NULL default '0',
wr_file1 varchar(255) NOT NULL default '',
wr_file2 varchar(255) NOT NULL default '',
wr_file1_source varchar(255) NOT NULL default '',
wr_file2_source varchar(255) NOT NULL default '',
wr_file1_download int(11) NOT NULL default '0',
wr_file2_download int(11) NOT NULL default '0',
wr_hit int(11) NOT NULL default '0',
wr_good int(11) NOT NULL default '0',
wr_nogood int(11) NOT NULL default '0',
mb_id varchar(20) NOT NULL default '',
wr_passwd varchar(16) NOT NULL default '',
wr_name varchar(20) NOT NULL default '',
wr_email varchar(255) NOT NULL default '',
wr_homepage varchar(255) NOT NULL default '',
wr_datetime datetime NOT NULL default '0000-00-00 00:00:00',
wr_ip varchar(15) NOT NULL default '',
wr_user_agent varchar(255) NOT NULL default '',
wr_update_datetime datetime NOT NULL default '0000-00-00 00:00:00',
wr_update_ip varchar(15) NOT NULL default '',
wr_update_user_agent varchar(255) NOT NULL default '',
PRIMARY KEY (wr_id),
KEY index1 (wr_notice,wr_num,wr_reply),
KEY index2 (wr_num,wr_parent_id),
KEY index3 (wr_datetime)
)");
// 게시판 환경 설정 테이블에서 각 게시판 BOARD 가져오기
$sql = " select a.bo_subject, a.bo_table, b.gr_subject
from $cfg[table_board] a, $cfg[table_group] b
where a.gr_id = b.gr_id AND b.gr_id = '$groupname'
order by b.gr_id, a.bo_table ";
$result = sql_query($sql);
$테이블수 = mysql_num_rows($result);
$sql_limit = intval($limit/$테이블수) + 3;
// BOARD 별로 게시판 돌면서 검색한다
while($row = mysql_fetch_array($result)) {
$tbl = "{$cfg[write_table_prefix]}{$row[bo_table]}";
$sql2 = " select a.wr_id,
a.wr_parent_id,
a.mb_id,
a.wr_name,
a.wr_email,
a.wr_num,
a.wr_subject,
a.wr_content,
a.wr_comment,
a.wr_commentcnt,
a.wr_datetime,
b.mb_icon
from $tbl a left join $cfg[table_member] b on (a.mb_id = b.mb_id)
where a.wr_comment = 0
order by a.wr_id desc
limit $sql_limit";
$result2 = sql_query($sql2);
// 검색 결과를 TEMPORARY 테이블에 집어 넣는다.
for ($i = 0; $row2 = mysql_fetch_array($result2); $i++) {
if ($row2[wr_comment] > 0) {
$sql3 = " select wr_subject
from $tbl
where wr_comment = 0 and wr_parent_id = '$row2[wr_parent_id]' ";
$row3 = sql_fetch_array($sql3);
$wr_subject = $row3[wr_subject];
} else {
$wr_subject = $row2[wr_subject];
}
sql_query("INSERT tmp SET
bo_table = '$row[bo_table]',
bo_subject = '$row[bo_subject]',
ca_id = '$row2[ca_id]',
wr_notice = '$row2[wr_notice]',
wr_num = '$row2[wr_num]',
wr_reply = '$row2[wr_reply]',
wr_parent_id = '$row2[wr_parent_id]',
wr_comment = '$row2[wr_comment]',
wr_commentcnt = '$row2[wr_commentcnt]',
wr_html = '$row2[wr_html]',
wr_secret = '$row2[wr_secret]',
wr_recv_email = '$row2[wr_recv_email]',
wr_subject = '".get_text(cut_str($wr_subject,$cut_subject,'…'))."',
wr_content = '".get_text(cut_str($row2[wr_content],$cut_content,'…'))."',
wr_link1 = '$row2[wr_link1]',
wr_link2 = '$row2[wr_link2]',
wr_link1_hit = '$row2[wr_link1_hit]',
wr_link2_hit = '$row2[wr_link2_hit]',
wr_file1 = '$row2[wr_file1]',
wr_file2 = '$row2[wr_file2]',
wr_file1_source = '$row2[wr_file1_source]',
wr_file2_source = '$row2[wr_file2_source]',
wr_file1_download = '$row2[wr_file1_download]',
wr_file2_download = '$row2[wr_file2_download]',
wr_hit = '$row2[wr_hit]',
wr_good = '$row2[wr_good]',
wr_nogood = '$row2[wr_nogood]',
mb_id = '$row2[mb_id]',
wr_passwd = '$row2[wr_passwd]',
wr_name = '".get_text(cut_str($row2[wr_name],12))."',
wr_email = '$row2[wr_email]',
wr_homepage = '$row2[wr_homepage]',
wr_datetime = '$row2[wr_datetime]',
wr_ip = '$row2[wr_ip]',
wr_user_agent = '$row2[wr_user_agent]',
wr_update_datetime = '$row2[wr_update_datetime]',
wr_update_ip = '$row2[wr_update_ip]',
wr_update_user_agent = '$row2[wr_update_user_agent]'
");
}
mysql_free_result($result2);
}
mysql_free_result($result);
// TEMPORARY 테이블 정보 가져오기
$result = sql_query("SELECT * FROM tmp ORDER BY wr_datetime DESC LIMIT $limit");
?>
<?
// 보여주기
if(mysql_num_rows($result) != 0) {
while($row = mysql_fetch_assoc($result)) {
$comment = "";
$atag_comment = "";
if ($row[wr_comment] > 0) {
$comment = "<span style='font-size:8pt;'>[c]</span> ";
$atag_comment = "#c{$row[wr_id]}";
}
$commentcnt = "";
if ($row[wr_commentcnt] > 0)
$commentcnt = "<font size=-2>({$row[wr_commentcnt]})</font>";
$wr_name = gblayer($row[mb_id], $row[wr_name], $row[wr_email]);
?>
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#AAAAAA">
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="lat_sub" height="20"> <a href='<?="./$cfg[index]?doc=$cfg[bbs_dir]/gnuboard.php&bo_table=$row[bo_table]"?>'><?=$row[bo_subject]?></a> :
<a href='<?="./$cfg[index]?doc=$cfg[bbs_dir]/gnuboard.php&bo_table=$row[bo_table]&wr_id=$row[wr_parent_id]"?>'><?=$row[wr_subject]?></a> <?=$list[$i][icon_new]?></td>
</tr>
<tr>
<td height="12" align="right" bgcolor="#EEEEEE"><span class='11px'>
<? echo "$mb_icon$wr_name$admin_icon" ?> @ <font color=gray>[<?=$row[wr_datetime]?>]</font> </span></td>
</tr>
<tr>
<td align="right" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td><?=$row[wr_content]?></td>
</tr>
</table>
<span class='10px'><a href='<?="./$cfg[index]?doc=$cfg[bbs_dir]/gnuboard.php&bo_table=$row[bo_table]&wr_id=$row[wr_parent_id]"?>'>자세히...</a><? if($list[$i][commentcnt]) { ?> | 코멘트 수 : <? echo $list[$i][commentcnt]; }?>
</span> </td>
</tr>
</table></td>
</tr>
</table><BR>
<? }
} else echo "등록된 글이 없습니다.";
?>
<?
mysql_free_result($result);
mysql_query("DROP TABLE tmp");
/*// 실행시간 측정
$run_time = get_microtime() - $begin_time;
echo($run_time); */
?>
추천
0
0
댓글 전체
정말 블로그처럼 보이려면 글을 자르지 않으면 됩니다.
wr_content = '".get_text(cut_str($row2[wr_content],$cut_content,'…'))."', 부분을
wr_content = '".get_text($row2[wr_content])."', 로 바꾸면 바로 되구용..
만일 HTML 코드를 사용했을 경우 아직은 제대로 보이게 하지 못했습니다. 임시 테이블을 사용하기 때문에 데이터처리를 어떻게 해야할지 모르겠네요. 고수분들이 알려주세용~
wr_content = '".get_text(cut_str($row2[wr_content],$cut_content,'…'))."', 부분을
wr_content = '".get_text($row2[wr_content])."', 로 바꾸면 바로 되구용..
만일 HTML 코드를 사용했을 경우 아직은 제대로 보이게 하지 못했습니다. 임시 테이블을 사용하기 때문에 데이터처리를 어떻게 해야할지 모르겠네요. 고수분들이 알려주세용~
말로만 듣던 블로그 .
그걸 해보고 싶었는데...
최곱니다.
그걸 해보고 싶었는데...
최곱니다.
아직 홈페이지가 정리중이라서요 ^^
짝작짝~!!!
미리보기 유알엘 링크도 시켜주세요.. 정주님 홈페이지 가서 보긴 했습니다만.. ^^^;;;
미리보기 유알엘 링크도 시켜주세요.. 정주님 홈페이지 가서 보긴 했습니다만.. ^^^;;;