열심히 맨땅에 헤딩하면서 나만의 모듈을 만들었습니다.
만든 이 모듈을 '사이트 메뉴'에 어떻게 표시해야 합니까?
다른 사람이 만든 모듈은 '사이트 메뉴'에 잘만 나오는데..
검색해 봐도 안 나오고..
방법이나 관련 문서를 좀 알려 주십시오.
고맙습니다~
PHP | PHP 7.4 |
---|---|
CMS | Rhymix 2.0 |
열심히 맨땅에 헤딩하면서 나만의 모듈을 만들었습니다.
만든 이 모듈을 '사이트 메뉴'에 어떻게 표시해야 합니까?
다른 사람이 만든 모듈은 '사이트 메뉴'에 잘만 나오는데..
검색해 봐도 안 나오고..
방법이나 관련 문서를 좀 알려 주십시오.
고맙습니다~
모듈은 두 종류가 있습니다. 게시판이나 페이지 모듈처럼 인스턴스(mid)를 생성하여 사용하는 모듈, 그리고 포인트 모듈처럼 자기 인스턴스 없이 다른 모듈의 작동에 관여하여 특정한 기능을 제공하기만 하는 모듈입니다. OOP에서 인스턴스 생성이 되는 클래스와 static으로만 사용하는 클래스를 생각하시면 됩니다. 전자는 사이트 메뉴에 추가할 수 있고, 후자는 추가할 수 없습니다.
그런데 역사적으로(?) XE는 이 두 가지 모듈을 구분할 수단을 제공하지 않았습니다. info.xml에서 뭔가 설정하면 될 것 같기도 한데, 실제로 구분하지 않습니다. 라이믹스도 XE의 모듈 구조를 물려받았으니 마찬가지고요. 분명 개선해야 할 부분이지만 호환성 유지를 핑계로 차일피일 미루고 있습니다. 사이트 메뉴 편집 부분의 코드 퀄리티가 워낙 엉망이라 쉽게 건드리기 힘들기도 하고요. ㅠ
현재 XE나 라이믹스에서 어떤 모듈이 인스턴스를 생성할 수 있는 모듈인지, 즉 사이트 메뉴에 추가할 수 있는지 없는지 구분하는 유일한 기준은 "이미 생성된 인스턴스가 있는가"입니다.
게시판이나 페이지는 설치할 때 기본으로 몇 개씩 생성되니까 이 기준을 통과하는 것입니다. 물론 게시판 모듈이나 페이지 모듈의 설정 화면에서도 게시판이나 페이지를 얼마든지 추가로 생성할 수 있고, 사이트 메뉴 편집 화면이 워낙 불안정한 관계로;; 오히려 이 방법을 선호하시는 분들도 꽤 많습니다.
아무튼 새로운 모듈의 첫 번째 인스턴스를 생성할 때는 moduleInstall()이나 moduleUpdate() 메소드에서 강제로 인스턴스(mid)를 생성해 주는 과정이 필요합니다. 널리 알려진 예제로는 출석부 모듈에서 insertModule()을 사용하는 부분을 참고하세요.
https://github.com/bjrambo/attendance/blob/master/attendance.class.php