KTH

라이믹스 기능 개발 #1 (글작성) 본문

웹 프레임워크/라이믹스

라이믹스 기능 개발 #1 (글작성)

kimtaekhan 2021. 5. 13. 15:33
본저자는 한번에 모든 내용을 담기 힘드므로 내용은 순서대로 작성될 예정입니다.

본 저자는 앞으로 아래의 디렉토리 위치 표기를 . 기준으로 파일위치 기반하여 설명 하겠습니다.

. 은 라이믹스가 설치된 경로입니다.

 

본저자는 아래와 같은 시스템으로 개발 진행 하였습니다.
NGINX / PHP / MariaDB

 

DB컬럼을 이용한 기능 구현시 수정해야 될 파일들
# 다국어별 출력할 메시지 설정
./common/lang/ko.php

./common/lang/en.php

# 컬럼생성 후 게시판 글 추가,수정 시 지정된 컬럼에 내용을 저장하기 위해 설정 필요

./modules/document/schemas/documents.xml

 

# 컬럼생성 후 게시판 글 추가 시 설정 필요

./modules/document/queries/insertDocument.xml

 

# 컬럼생성 후 글 쓰기,수정시 내용을 불러오기 위한 함수 생성 필요

./modules/document/document.item.php

 

글 작성에 앞서 각각 목적에 맞게 파일을 수정하여야 함을 알려드립니다.
또한 게시판에서 글 불러오는 과정에서 칼럼 추가내용이 없거나 하면 오류가 발생하므로 주의 바랍니다.

 

 


 

< 컬럼 생성 >
MySQL 컬럼추가
alter table [테이블명] add [컬럼명] [타입] [옵션]; 
ex) alter table [테이블명] add [컬럼명] varchar(100) not null default '0'; 
라이믹스에서 게시판과 관련된 데이터가 저장되는 테이블은 rx_documents 입니다.

 

Query > alter table rx_documents add product_youtube_link longtext null;
MariaDB [wms]> desc rx_documents;
+----------------------+--------------+------+-----+---------+-------+
| Field                | Type         | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+-------+
| product_youtube_link | longtext     | YES  |     | NULL    |       |
+----------------------+--------------+------+-----+---------+-------+
39 rows in set (0.00 sec)

생성된 테이블 구조 확인

 


 

< PHP 파일 수정 >

 

# 컬럼생성 후 게시판 글 추가,수정 시 지정된 컬럼에 내용을 저장하기 위해 설정 필요
./modules/document/schemas/documents.xml
<table name="documents">
    <column name="product_youtube_link" type="bigtext" default="" />
</table>

앞서 생성한 컬럼에 맞춰 PHP에 컬럼 등록

 

39번줄 처럼 생성한 컬럼에 맞춰 PHP파일에 컬럼을 등록시켜 줍니다.

 


 

# 컬럼생성 후 게시판 글 추가 시 설정 필요
./modules/document/queries/insertDocument.xml
<query id="insertDocument" action="insert" priority="LOW">
    <tables>
        <table name="documents" />
    </tables>
    <columns>
        <column name="product_youtube_link" var="product_youtube_link" />
    </columns>
</query>

앞서 생성한 컬럼에 맞춰 PHP에 컬럼 등록

 

43번줄 처럼 생성한 컬럼에 맞춰 PHP파일에 컬럼을 등록시켜 줍니다.

 


 

# 컬럼생성 후 글 쓰기,수정시 내용을 불러오기 위한 함수 생성 필요
./modules/document/document.item.php
function getProductYoutubeLinkText($strlen = 0)
{
	if(!$this->isExists())
	{
		return;
	}
	
	if(!$this->isAccessible())
	{
		return lang('msg_is_secret');
	}
	
	$product_youtube_link= $this->get('product_youtube_link');
	$product_youtube_link= preg_replace_callback('/<(object|param|embed)[^>]*/is', array($this, '_checkAllowScriptAccess'), $product_youtube_link);
	$product_youtube_link= preg_replace_callback('/<object[^>]*>/is', array($this, '_addAllowScriptAccess'), $product_youtube_link);
	if($strlen)
	{
		$product_youtube_link= trim(utf8_normalize_spaces(html_entity_decode(strip_tags($product_youtube_link))));
		$product_youtube_link= cut_str($product_youtube_link, $strlen, '...');
	}
		
	return escape($product_youtube_link);
}

글 출력, 수정시 내용을 불러오기 위해 함수를 생성

 

위 사진처럼 글 등록 후 출력, 수정시 내용을 불러오기 위해 함수를 생성합니다.

 


 

< HTML 파일 수정 >
게시판 스킨마다 수정해야할 HTML 파일이 다를 수 있습니다.
코드를 어떻게 추가해야 하는가에 대해서만 다루겠습니다.
 {$oDocument->getProductYoutubeLinkText()} 부분이 앞서 생성한 함수에 의해 기존값을 불러오는 코드입니다.
이것을 이용하여 실제 유튜브 동영상을 출력하는 것이 가능하게 됩니다.
이기능 구현은 추 후 심화과정에서 다루도록 하겠습니다.

 


 

언어 파일 수정 >
# 다국어별 출력할 메시지 설정
./common/lang/ko.php
제목
$lang->video_youtube = '유튜브 동영상';
입력란에 출력할 문자열
$lang->input_youtube_video= '동영상 링크를 입력해 주세요.';

위의 내용이 적용된 화면

 


 

< 최종화면 >

글작성 화면

 

DB 컬럼에 저장된 데이터
MariaDB [wms]> select product_youtube_link from rx_documents;
+---------------------------------------------+
| product_youtube_link                        |
+---------------------------------------------+
| https://www.youtube.com/watch?v=_oRaN3zkv-w |
+---------------------------------------------+
1 row in set (0.00 sec)

 

라이믹스 기능 개발 #1 (글작성) 편은 이렇게 마무리 하겠습니다.
끝까지 읽어 주셔서 감사합니다 ~!