워드프레스를 이용하지 않고, 일반PHP로 워드프레스 게시물 내용을 불러올 경우에 사용되는 방법입니다.
이번 포스트는 리스트부분만 포함됩니다.
워드프레스URL: http://globalwing.co.kr/wordpress/?board=photo
결과확인URL: http://globalwing.co.kr/time-space/mobile/wp/list.html
위 list.html의 소스는 아래와 같습니다.
(단 조건은 타임스페이스 프레임웍을 사용할때의 소스 입니다.
프레임웍을 사용하지 않더라도 아래 소스의 핵심은
//아래 쿼리에 사용되는 워드프레스 테이블 명 wp_posts(게시물리스트), wp_terms(게시판ID)
//wp_term_relationships(게시판ID와 게시물의 관계), wp_postmeta(게시물과 첨부파일의 관계)
위 관계를 쿼리에 잘 이용하는 것입니다. 쿼리만 주의깊게 보세요!)
<?php
session_start();
define('DS', DIRECTORY_SEPARATOR);
define('GPLDIR', $_SERVER['DOCUMENT_ROOT'].DS.'time-space/manage');
include_once GPLDIR . '/core/config/default.php';
include_once GPLDIR_CLASS . '/GPLbase.class.php';
$GPLbase = new GPLmember($GPLcookie_domain, $GPLurl_default, $GPLpath_default);//상속받은 개체 멤버클래스 사용
$GPLdb5 =& $GPLbase->db5;//db 커넥션 오브젝트생성 MYSQL5
//아래 쿼리에 사용되는 워드프레스 테이블 명 wp_posts(게시물리스트), wp_terms(게시판ID)
//wp_term_relationships(게시판ID와 게시물의 관계), wp_postmeta(게시물과 첨부파일의 관계)
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="height=device-height,width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no;" />
<title>Time-Space Web Service</title>
<link rel="stylesheet" type="text/css" href="/time-space/mobile/css/reset.css">
<link rel="stylesheet" type="text/css" href="/time-space/mobile/css/style.css">
</head>
<body>
<?php
//게시판 공통변수 항상 페이지 상단에 위치
$MODE = $_REQUEST['MODE'];
$GUBN = $_REQUEST['GUBN'];
$SEARCH = $_REQUEST['SEARCH'];
$BOARD_ID = $_REQUEST['BOARD_ID'];
$BOARD_SEQ = $_REQUEST['SEQ'];
$now_page = $_REQUEST['now_page'];
//메뉴 변수
switch ($BOARD_ID) { //photo
case 'photo' : $BOARD_ID='14'; $title='사진게시판';break;
default : $BOARD_ID='14'; $title='사진게시판';break;
}
?>
<?php
//페이징설정 넘버링 시작
$now_page = $_GET['now_page'];
//================ pageing 계산 code ======================================
// 1 - 현재 페이지 설정
if($now_page == ""){
$now_page = 1;
}
// 2 - 블럭크기 설정
if($block_size == ""){
$block_size = 7;
}
// 3 - 각 블럭의 start 페이지 값을 설정한다
if($now_page % $block_size == 0){
$start_num = abs($now_page - $block_size + 1); // 현재 페이지가 블럭의 마지막 페이지 일 경우 해당 블럭의 시작 페이지 번호를 정한다
}else{
$start_num = floor($now_page/$block_size)*$block_size + 1; // 현재페이지가 블럭의 마지막 페이지가 아닐경우 시작 페이지를 지정한다
}
// 4 - 각 블럭의 end 페이지 값을 설정한다
$end_num = $start_num + $block_size - 1;
// 5 - 카운터 쿼리호출 (마지막 페이지에서 존재하지 않는 페이지 숫자를 없애주기 위해 토탈레코드 숫자를 구한다 )
//SELECT * from wp_posts where ID IN (SELECT object_id FROM `wp_term_relationships` where term_taxonomy_id = 14) order by ID desc
$SQL = "SELECT";
$SQL .= " COUNT(ID) AS COUNT";
$SQL .= " FROM wp_posts";
$SQL .= " WHERE ID IN (SELECT object_id FROM wp_term_relationships where term_taxonomy_id = $BOARD_ID)";
$SQL .= " AND (post_title LIKE '%".$SEARCH."%'";
$SQL .= " OR post_content LIKE '%".$SEARCH."%')";
$result = $GPLdb5->GPLquery_fetch_assoc_one($SQL);
if($result){
$total_rec = $result['COUNT'];
}
// 6 - 한페이지당 보여줄 레코드 수 설정
$recnum_per_page = 4;
// 7 - 불러오기 쿼리문에서 시작레코드 숫자 지정
if($now_page == 1){
$st_limit = 0;
}else{
$st_limit = $now_page * $recnum_per_page - $recnum_per_page;
}
// 8 - 이전 블럭 설정
$before_block = abs($start - 1);
// 9 - 다음 블럭 설정
$next_block = $end_num + 1;
?>
<article id="container">
<h2><a href="./list.html?BOARD_ID=$BOARD_ID" title=""><span>포토게시판</span></a></h2>
<section class="main">
<ul>
<?php
//셀렉트
$SQL = "SELECT";
$SQL .= " ID as SEQ,post_title,post_content";
$SQL .= " FROM wp_posts";
$SQL .= " WHERE ID IN (SELECT object_id FROM wp_term_relationships where term_taxonomy_id=$BOARD_ID)";
$SQL .= " AND (post_title LIKE '%".$SEARCH."%'";
$SQL .= " OR post_content LIKE '%".$SEARCH."%')";
$SQL .= " ORDER BY ID DESC LIMIT $st_limit , $recnum_per_page";
$result = $GPLdb5->GPLexcute_query($SQL);
$i=0;
if($result){
while($ROW = mysql_fetch_array($result)) {
//썸네일 첨부파일 갯수
$SQL = "SELECT";
$SQL .= " COUNT(meta_id) AS FILE_CNT";
$SQL .= " FROM wp_postmeta";
$SQL .= " WHERE post_id = '".$ROW['SEQ']."'";
$SQL .= " AND meta_key = 'gnu_bbs_file'";
$FILE_ROW = $GPLdb5->GPLquery_fetch_assoc_one($SQL);
$FILE_CNT = $FILE_ROW['FILE_CNT'];
?>
<li>
<a href="/time-space/mobile/wp/view.html?BOARD_ID=<?=$BOARD_ID?>&SEQ=<?=$ROW['SEQ']?>">
<span>●</span> <?=cut_str($ROW[post_title],58,'...')?><br/>
<?php
//첨부파일 셀렉트
/* 원래 썸네일 파일 자료에서 추출해야 하지만, 힘들어서 주석처리 그냥 이미지 추출로 대체
$SQL = "SELECT";
$SQL .= " meta_value";
$SQL .= " FROM wp_postmeta";
$SQL .= " WHERE post_id IN (";
$SQL .= " SELECT meta_value from wp_postmeta WHERE post_id = '".$ROW['SEQ']."'";
$SQL .= " AND meta_key = '_thumbnail_id'";
$SQL .= " )";
$SQL .= " AND meta_key='_wp_attachment_metadata'";
$fileresult= $GPLdb5->GPLexcute_query($SQL);
*/
$SQL = "SELECT";
$SQL .= " guid";
$SQL .= " FROM wp_posts";
$SQL .= " WHERE ID IN (";
$SQL .= " SELECT meta_value from wp_postmeta WHERE post_id = '".$ROW['SEQ']."'";
$SQL .= " AND meta_key = '_thumbnail_id'";
$SQL .= " )";
$fileresult= $GPLdb5->GPLquery_fetch_assoc_one($SQL);
if($fileresult){
?>
<span class="visual"><img src="<?=$fileresult['guid']?>" style="vertical-align:bottom;"><?=($FILE_CNT>1)?"(+".(($FILE_CNT)-1).")":"";?></span>
<?php } ?>
</a>
</li>
<?php $i++;
}
}
?>
</ul>
</section>
<!--paging시작-->
<div id="paging-wrap">
<div id="board_list_paging">
<ul>
<?
//================ pageing 출력 10번~12번 code ======================================
if($start_num > 1){ // 10 - 이전 블럭 링크?>
<a href="list.html?now_page=<?=$before_block?>&GUBN=<?=$GUBN?>&SEARCH=<?=$SEARCH?>&BOARD_ID=<?=$BOARD_ID?>" onFocus="blur()">
<li>Prev</li>
</a>
<? } ?>
<?
for($i=$start_num; $i<=$end_num; $i++){ // 11 - 페이지 링크
if(ceil($total_rec/$recnum_per_page) >= $i){
if($now_page == $i){ ?>
<a href="#"><li class="selected_page">
<?=$i?>
</li></a>
<? }else{ ?>
<a href="list.html?now_page=<?=$i?>&GUBN=<?=$GUBN?>&SEARCH=<?=$SEARCH?>&BOARD_ID=<?=$BOARD_ID?>" onFocus="blur()">
<li><?=$i?></li>
</a>
<? }
}
} ?>
<?
if($end_num * $recnum_per_page < $total_rec){ // 12 - 다음 블럭 링크?>
<a href="list.html?now_page=<?=$next_block?>&GUBN=<?=$GUBN?>&SEARCH=<?=$SEARCH?>&BOARD_ID=<?=$BOARD_ID?>" onFocus="blur()">
<li>Nex<li>
</a>
<? }
//====================================================================
?>
</ul>
</div>
</div>
<!--paging끝-->
<!--검색영역시작-->
<span class="clear10"></span>
<div id="board_list_search">
<form method="get" name="form_search" id="form_search" action="">
<select name="GUBN" id="GUBN" class="type-select">
<option selected="selected" value="1">ALL</option>
<option value="2">subject</option>
<option value="3">content</option>
</select>
<input type="text" name="SEARCH" id="SEARCH" size=15 class="type-text" value="">
<input type="hidden" name="BOARD_ID" id="BOARD_ID" value="<?=$BOARD_ID?>">
<button type="submit" class="type-submit">Search</button>
</form>
</div>
<span class="clear10"></span>
<!--검색영역끝-->
</article>
</body>
</html>
스크롤링으로 페이징구현하기 (0) | 2017.08.08 |
---|---|
워드프레스 테이블내용을 일반PHP로 출력하기02_뷰화면 (0) | 2017.08.06 |
노드js_그누보드와 연동_03 (0) | 2017.07.23 |
노드js_그누보드와 연동_02 (0) | 2017.07.18 |
노드js_그누보드와 연동_01 (0) | 2017.07.13 |
댓글 영역