매뉴얼

확장 기능 제작

라이믹스가 기본 제공하는 회원 관리, 게시판, 페이지 등의 기능은 여러 가지 방법으로 확장할 수 있고, 완전히 새로운 기능을 추가하더라도 대부분의 경우 코어를 수정할 필요는 없습니다.

각각의 확장 기능은 일정한 규칙에 따라 독립적으로 작동하므로, 한 업체가 구축한 웹사이트에 다른 업체가 판매하는 모듈을 추가하거나, 프리랜서에게 레이아웃을 주문 제작하는 등, 운영상의 필요에 유연하게 대처할 수 있습니다. 특정 업체나 개발자에게 의존하지 않고 직접 서비스를 운영하려는 분들이 라이믹스를 많이 선택하는 이유입니다.

라이믹스의 확장 기능에는 모듈, 애드온, 위젯, 레이아웃, 그리고 각 모듈과 위젯이 지원하는 스킨이 있습니다. 레이아웃과 스킨에 대해서는 테마 제작 섹션에서 더 자세히 다룹니다.

모듈 #

독립적인 웹 페이지, API 엔드포인트 등의 URL을 가져야 하는 기능이라면 모듈로 제작합니다.

각 모듈은 MVC 구조로 이루어지고, 독립적인 네임스페이스 아래에서 다수의 컨트롤러와 모델 클래스 등을 선언할 수 있습니다. 각각 PC와 모바일 환경을 위한 (또는 적응형으로 만들어진) 다수의 스킨을 포함할 수 있으며, 자신이 사용할 DB 테이블의 스키마를 선언하고, 다국어 지원을 위한 언어 파일을 함께 제공하는 등, 일반적인 웹 프레임워크를 사용하여 구축한 MVC 구조의 어플리케이션 전체에 해당할 만큼의 기능을 모듈 하나에 담을 수 있습니다.

라이믹스로 구축된 웹사이트는 여러 모듈을 각각의 URL prefix에 연결하여 만들어집니다. 각 모듈은 자신에게 연결된 URL prefix 아래의 모든 URL을 통제할 수 있습니다. 예를 들어 /board라는 URL prefix를 부여받은 게시판 모듈은 /board/1234/edit, /board/new 등의 URL을 생성할 수 있습니다.

라이믹스 사이트의 일반적인 구조
example.com/        -> 페이지 모듈 (외부 페이지 기능)
example.com/about   -> 페이지 모듈 (문서 페이지 기능)
example.com/notice  -> 게시판 모듈
example.com/qna     -> 게시판 모듈
example.com/shop    -> 자체 제작한 쇼핑몰 모듈
example.com/contact -> 커뮤니티에서 다운로드한 컨택폼 모듈
...

하나의 모듈이 사용할 URL 라우팅 규칙, DB 테이블 스키마, 템플릿 등이 하나의 디렉토리 아래에 모두 존재하므로, 필요에 따라 모듈을 구입하거나, 직접 제작하여 설치하거나, 배포·판매하기가 용이합니다.

모듈은 이벤트를 발생시키고, 다른 모듈이 발생시킨 이벤트에 핸들러를 등록하는 형식으로 다른 모듈의 실행 과정에 안정적으로 끼어들 수 있습니다. 즉, 다른 모듈의 동작에 변화를 주기 위해 해당 모듈을 직접 수정할 필요가 없습니다. 아래에서 설명할 애드온과 마찬가지로, 페이지를 생성하지 않고 다른 모듈의 이벤트에 끼어드는 것만을 목적으로 하는 모듈도 있습니다.

애드온 #

애드온은 라이믹스의 요청 라이프사이클 도중 특정한 시점에 인클루드하여 사용하는 코드 조각입니다. 독립적인 URL을 갖거나 웹 페이지를 생성하지 않고, 다른 페이지의 실행 과정에 끼어드는 기능뿐이라면 애드온으로 구현할 수 있습니다.

예를 들어 게시판의 글읽기 화면에 끼어들어 내용을 변형시키거나, SEO를 위해 어떤 헤더를 추가하거나, 어떤 지역의 접속자에게만 쿠키 동의 배너를 표시해야 한다면, 그러한 기능이 필요한 모든 화면을 수정하기보다 애드온으로 일괄 처리하는 것이 효율적일 수 있습니다.

애드온으로 구현할 수 있는 모든 기능은 모듈로도 구현할 수 있고, 기능이 예상보다 복잡해질 경우 모듈로 전환하는 것이 더 효율적일 가능성이 높습니다. 현재 라이믹스는 XE 1.x와 동일한 형태의 애드온을 지원하고 있으나, 모듈 제작이 가능한 상황이라면 애드온을 신규 제작하는 것은 권장하지 않습니다.

위젯 #

TODO