블로그처럼 보기 > 그누3 팁자료실

그누3 팁자료실

블로그처럼 보기 정보

그누호환 블로그처럼 보기

본문

여기 올라온 팁들을 짜맞춰서 그룹별 게시물 미리보기로 마치 블로그처럼 해본 것입니다. 이틀째 삽질하다가 겨우겨우 해냈습니다. 일단은 게시물 미리보기가 원칙이라서 게시물이 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">&nbsp;<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" ?>&nbsp;@&nbsp;<font color=gray>[<?=$row[wr_datetime]?>]</font>&nbsp;</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>&nbsp;</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

댓글 전체

정말 블로그처럼 보이려면 글을 자르지 않으면 됩니다.
wr_content = '".get_text(cut_str($row2[wr_content],$cut_content,'…'))."',  부분을
wr_content = '".get_text($row2[wr_content])."', 로 바꾸면 바로 되구용..
만일 HTML 코드를 사용했을 경우 아직은 제대로 보이게 하지 못했습니다. 임시 테이블을 사용하기 때문에 데이터처리를 어떻게 해야할지 모르겠네요. 고수분들이 알려주세용~
전체 1,026
그누3 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT