Extra Form
PHP PHP 8.2
CMS Rhymix 2.1

Web capture_30-9-2023_131655_clean.ugaon.com.jpeg

 

순정 상태의 메뉴 타입을 보면, 문서 페이지, 위젯 페이지, 외부 페이지와 같은 메뉴 타입을 확인할 수 있는데요.

제가 만든 모듈도, page 모듈처럼 메뉴 타입을 생성하여 사용하고 싶습니다.

 

방법을 찾던 도중 https://xetown.com/tips/434432 게시글을 발견했습니다.

DB의 module_trigger 테이블을 직접 수정하고, 모듈 내에 콜백 함수를 선언하는 방법이었습니다.

 

그런데, /modules/page 모듈 같은 경우는 DB에 등록된 trigger도 없고, 모듈 내에 콜백 함수도 없었습니다.

 

제 모듈도 간단한 방법으로 메뉴 타입에 추가하고 싶은데, 어떻게 하면 page 모듈처럼 메뉴 타입을 추가할 수 있을까요?

혹시, page 모듈은 핵심적인 기능이라서 코어 자체에서 메뉴 타입을 등록하는 코드가 어디 있는 건가요?

 

코어 수정 없이, 메뉴 타입 추가하는 코드를 보신 분이 계신다면, 라이믹스 Github 저장소 통해 링크를 걸어주시면 더욱 감사하겠습니다.

  • profile
    https://github.com/rhymix/rhymix/blob/master/modules/menu/menu.admin.model.php#L376-L391

    코어에서는 페이지 모듈만 특별히 예외적으로 문서 페이지, 위젯 페이지, 외부 페이지로 나눠서 추가해주고 있습니다. 직접 해당 메뉴에 항목을 추가하거나 조작하는 것은 모듈이나 애드온 없이 불가능합니다.

    https://github.com/rhymix/rhymix/blob/master/modules/menu/menu.admin.model.php#L398

    1) 리턴되는 all_modules 값을 조작해도 되고, 2) 인스턴스를 여러 개 가질 수 있는 모듈이면 위의 사진처럼 바로 추가 가능합니다.

    모듈 최초 설치 시, a 모듈에 대한 인스턴스를 1개 만들도록 해주세요.
  • profile profile

    Github 링크를 포함한 상세한 답변을 주셔서 감사드립니다.

     

    역시나 page 모듈은 좀 특이하다 생각했는데 코어에서 넣어주고 있었군요.
    덕분에 큰 의문점이 풀렸습니다.

     

    말씀 주신 1번 방법은 all_modules 값을 조작하기 위해 getModuleListInSitemap 트리거를 사용하는 방법이겠군요.


    2번 방법은 이러한 코드를 통해 "모듈 인스턴스"를 강제로 생성하여 최소 1개 이상 존재하면 사이트맵 메뉴 타입에 자동 추가되겠고요.

     

    어떨 때 단일 인스턴스 또는 복수 인스턴스가 적합한지 아직 잘 모르겠으나, 싱글톤 패턴과 관련이 있을 수도 있겠네요.

     

    소중한 답변 감사합니다.

    수수께끼를 하나씩 풀어나가 보겠습니다.

     

    - 참고한 게시물들

    1. https://xetown.com/questions/1762493

    2. https://xetown.com/topics/1561300