[개인 의뢰] PHP에서의 json 데이터 활용

개발일지/작업일지
2026.01.02
반응형

 

개인 의뢰로 그누보드 5 기반(일명 아보카도 에디션이라 부르는 것)의 홈페이지 작업을 했다.

개인 홈페이지 작업이다. 의뢰하신 분(이하 클라이언트라 칭하겠다)는 HTML을 포함한 프론트엔드 및 퍼블리싱에 대해서 잘 모르시는 듯하였기 때문에 본래의 코드를 고치기보단 추가하여 보강하는 방식으로 작업을 했다.

 

구현을 하기 위해서 본 디자인에서 몇 가지 제약이 있었다.

  1. 본문 부분이 풀스크린이 아니었다. 스크롤이 생기는 너비 및 높이 제한의 것.
  2. 꾸밈 이미지가 본문의 앞뒤로 있다.

하드코딩하면 된다면야 그냥 마구 고치면 되겠지만, 말했다시피 클라이언트는 이쪽에 대해서 문외한이다. 여태까지는 개인 홈페이지의 구현을 할 때 "필요하면 알아서 고치시겠지"라고 생각하고 그냥 욱여넣었지만, 작업을 오래하다보니 그런 부분들이 클라이언트들에게 꽤 불편할 수도 있겠단 생각을 하여 이번에는 작업 방식을 바꿨다.

 

그누보드는 PHP 기반 보드 서비스다. 그렇다면 PHP의 방식을 사용하면 된다.

 

 

커스텀 폴더를 만들어 index와 head쪽에 include 처리했다. 이제 꾸밈 이미지나 스타일 시트를 적용하면 된다. 해당 폴더에 ReadMe를 넣어서 어떻게 처리하는지 설명서를 넣었다.

 

<?
	add_stylesheet('<link rel="stylesheet" href="'.G5_URL.'/commission/style.css">', 0);
	add_stylesheet('<link rel="stylesheet" href="'.G5_URL.'/commission/style.css.php">', 0);
?>

<?
	$file_path = G5_PATH.'/commission/img.json';
	$file = file_get_contents($file_path);
	$images = json_decode($file,true);

	$count = 0;
	$count = count($images);
	
	for($i=0; $i<$count; $i++) {
	$img_url[$i] = G5_URL.'/commission/img/'.$images[$i]['name'];
?>
	<img src="<?=$img_url[$i]?>" style="z-index:<?=isset($images[$i]['index']) && $images[$i]['index'] !== '' ? $images[$i]['index'] : '0' ?>; <?=isset($images[$i]['top']) && $images[$i]['top'] !== '' ? 'top:'.$images[$i]['top'].'px;' : '' ?> <?=isset($images[$i]['right']) && $images[$i]['right'] !== '' ? 'right:'.$images[$i]['right'].'px;' : '' ?> <?=isset($images[$i]['bottom']) && $images[$i]['bottom'] !== '' ? 'bottom:'.$images[$i]['bottom'].'px;' : '' ?> <?=isset($images[$i]['left']) && $images[$i]['left'] !== '' ? 'left:'.$images[$i]['left'].'px;' : '' ?>" class="commission_custom">

<?	
	}
?>

<script src="<?=G5_URL?>/commission/script.js"></script>

 

별로 대단한 건 아니라 그냥 삽입한 코드를 공개한다. 애초에 세부사항은 안에서 전부 처리했기도 하다.

이미지 처리에 대한 고민을 많이 했다. DB에 저장하여 부르는 방법도 있었지만, 아예 쓰지 않게 될 걸 감안한다면 그 방법은 번거롭다. 애초에 이미지도 고정이기도 하고. 그래서 이번에 사용한 건 json 파일을 이용하여 이미지 데이터를 임의로 사용한 것이다.

 

이런 식으로 설정 및 저장하였다.

 

다만 이번에 작업하며 깨달은 건 file_get_contents 가 아니라면 json 파일을 부르는 것에 과정이 조금 더 늘어난다. 처음에 시도한 것은 fopen이었다. 근데… fopen으로만 부르면 된다고 생각했던 게 착오였다. fopen은 그냥 불러내기만 할 뿐이다. 읽으려면 fread가 필요하다. 그 모든 걸 간단히 아우르는게 file_get_contents라고 보면 된다.

여하튼 불러낸 json 파일을 decode하면 PHP 배열로 변한다. 그 이후의 배열을 알아서 처리하면 끝. 간단한 문제였다.

 

 

반응형
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31