게시물 보기

게시물 보기 페이지 만들기에 관해 설명합니다.

Data ID

GET_POST

Request

Name Value
post_key 게시물 고유 키
page_link_url 코멘트 목록 페이징의 링크 URL
page_link_hash 페이징의 이동 링크 Hash(Hash 페이지 내에서 Hash링크로 이동해야 하는경우 필요)
page 코멘트 페이지 번호
list_per_page 페이지당 출력될 코멘트 개수
block_per_page 페이지 내 페이징 블럭에 표시될 페이지 링크 수
get_most_read_post_flg 많이 본 게시물 data 요청 여부(Y 또는 N)
most_read_post_limit 표시할 많이 본 게시물 수

Response

JSON : output.post[0], PHP : $output['post'][0]

Name Value
avatar_url 아바타 URL
bbs_name 게시판 명
bbs_seq 게시판 시퀀스
contents 게시물 내용 Array(['content'=>내용])
create_date 등록일시 Y-m-d H:i:s 형식
create_date_type_ymhi 등록일시 y-m-d h:i 형식
member_seq 게시자 회원 시퀀스
modify_date 수정일시 Y-m-d H:i:s 형식
nickname 게시자 닉네임(현재 시점)
post_key 게시물 고유키
read_count 게시물 조회수
reg_name 게시자 닉네임(게시물 등록시점)
seq 게시물 시퀀스
subject 제목
tags 태그 Array(['tag'=>'태그1'],['tag'=>'태그2'])
related_post 관련 글 목록 Array
[
'subject'=>'제목',
'reg_name'=>'등록인 이름',
'avatar_url'=>'등록인 이름',
'create_date'=>'등록일',
'post_key'=>'게시글 고유키'
]

HTML attributes

Value의 대괄호 안에 값은 사용자가 변경해야 하는 값입니다.

Tag : div 게시물이 표시되는 영역

Name Value Description
id post  
data-post-key [post_key] \{\{output.post[0].post_key\}\}, $output['post'][0]['post_key']

Tag : a 게시물 수정 버튼

Name Value Description
href [URL]?post_key=[post_key] post_key 파라미터를 포함한 게시물 수정 페이지 URL

Tag : a 또는 button 게시물 삭제 버튼(button일 경우 type="button")

Name Value Description
class h-btn-delete 삭제 event bind용 selector class
data-return-url [URL] 게시물 삭제 후 이동할 페이지 URL

HTML

게시판 명

게시물의 제목이 표시됩니다.

24-12-24 01:27 by
등록인

H:Dev+는 MVC(Model-View-Controller) 모델을 기반으로 하며, Back-End 영역에서 Model과 Controller를 제공하여 Front-End 개발에 집중할 수 있도록 지원합니다. Front-End와 Back-End 간의 통신은 RESTful 방식을 사용합니다. 이를 위해 Connector을 통해 POST 요청(Request)을 보내고 JSON 형태로 결과를 반환(Response)합니다. URL 대신 dataID를 사용하여 고유 리소스 식별자를 지정하며, 보안을 위해 secureKey가 필요합니다.

태그1 태그2 태그3

VueJS

<div id="post" colon:data-post-key="output.post[0].post_key" class="me-3">
	<div class="py-3">
		<div class="row">
			<div class="col-12">
				<div class="d-flex justify-content-between align-items-center py-3 border-bottom">
					<div>
						<small class="ms-1 fw-bold">\{\{output.post[0].bbs_name\}\}</small>
					</div>
					<div class="d-flex justify-content-between align-items-center" vv-if="output.user.auth_flg && output.post[0].member_seq == output.user.seq">
						<a colon:href="'./modify.html?post_key='+output.post[0].post_key" class="mx-1 btn btn-dark d-flex justify-content-between align-items-center lh-1"><small class="smaller d-none text-white d-md-block">수정</small></a>
						<a href="#" data-return-url="./list.html" colon:data-post-key="output.post[0].post_key" class="h-btn-delete mx-1 btn btn-dark d-flex justify-content-between text-white align-items-center lh-1"><small class="smaller d-none d-md-block">삭제</small></a>
					</div>
				</div>
				<h1 class="fs-3 mt-4 mb-4">\{\{output.post[0].subject\}\}</h1>
			</div>
		</div>
		<div class="row">
			<div class="col-12 text-start">
				<div class="d-flex justify-content-start align-items-center">
					\{\{output.post[0].create_date_type_ymhi\}\} by
					<div class="mx-2">
						<img vv-if="output.post[0].avatar_url" colon:src="output.post[0].avatar_url" style="max-width:1.5rem;"/>
						<i vv-else class="fas fa-user-circle"></i>
					</div>
					\{\{output.post[0].reg_name\}\}
				</div>
			</div>
		</div>
	</div>
	<div class="row">
		<div class="col-12">
			<div><p class="text-justify" vv-html="output.post[0].contents[0].content"/></div>
			<div class="d-flex align-items-center justify-content-start my-4" vv-if="output.post[0].tags && output.post[0].tags.length>0">
	                <span vv-for="tags in output.post[0].tags" class="badge bg-white border me-1 fw-normal text-hbnc-secondary me-2 px-3 py-2">
	                    \{\{tags.tag\}\}
	                </span>
			</div>
		</div>
	</div>
</div>

PHP

<div id="post" data-post-key="<?=$output['post'][0]['post_key']; ?>" class="me-3">
	<div class="py-3">
		<div class="row">
			<div class="col-12">
				<div class="d-flex justify-content-between align-items-center py-3 border-bottom">
					<div>
						<small class="ms-1 fw-bold"><?=$output['post'][0]['bbs_name']; ?></small>
					</div>
					<? if($output['user']['auth_flg'] && $output['post'][0]['member_seq']==$output['seq']){ ?>
					<div class="d-flex justify-content-between align-items-center" vv-if="output.user.auth_flg && output.post[0].member_seq == output.user.seq">
						<a href="'./modify.html?post_key=<?=$output['post'][0]['post_key']; ?>" class="mx-1 btn btn-dark d-flex justify-content-between align-items-center lh-1"><small class="smaller d-none text-white d-md-block">수정</small></a>
						<a href="#" data-return-url="./list.html" data-post-key="<?=$output['post'][0]['post_key']; ?>" class="h-btn-delete mx-1 btn btn-dark d-flex justify-content-between text-white align-items-center lh-1"><small class="smaller d-none d-md-block">삭제</small></a>
					</div>
					<? } ?>
				</div>
				<h1 class="fs-3 mt-4 mb-4"><?=$output['post'][0]['subject']; ?></h1>
			</div>
		</div>
		<div class="row">
			<div class="col-12 text-start">
				<div class="d-flex justify-content-start align-items-center">
					<?=$output['post'][0]['create_date_type_ymhi']; ?> by
					<div class="mx-2">
						<? if($output['post'][0]['avatar_url']){ ?>
						<img vv-if="output.post[0].avatar_url" src="<?=$output['post'][0]['avatar_url']; ?>" style="max-width:1.5rem;"/>
						<? }else{ ?>
						<i class="fas fa-user-circle"></i>
						<? } ?>
					</div>
					<?=$output['post'][0]['reg_name']; ?>
				</div>
			</div>
		</div>
	</div>
	<div class="row">
		<div class="col-12">
			<div><p class="text-justify"/><?=$output['post'][0]['content']; ?></div>
			<? if(is_array($output['post'][0]['tags']) && count($output['post'][0]['tags'])>0){ ?>
			<div class="d-flex align-items-center justify-content-start my-4">
				<? foreach($output['post'][0]['tags'] as $arrTags){ ?>
	                <span vv-for="tags in output.post[0].tags" class="badge bg-white border me-1 fw-normal text-hbnc-secondary me-2 px-3 py-2">
	                    <?=$arrTags['tag'];?>
	                </span>
				<? } ?>
			</div>
			<? } ?>
		</div>
	</div>
</div>