본문으로 이동
주 메뉴
주 메뉴
사이드바로 이동
숨기기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
LS Taiwan
검색
검색
보이기
계정 만들기
로그인
개인 도구
계정 만들기
로그인
로그아웃한 편집자를 위한 문서
더 알아보기
기여
토론
Dolibarr 모듈 개발
편집하기
문서
토론
한국어
읽기
편집
역사 보기
도구
도구
사이드바로 이동
숨기기
동작
읽기
편집
역사 보기
일반
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
보이기
사이드바로 이동
숨기기
172.27.0.1
(
토론
)
님의 2025년 4월 8일 (화) 07:58 판
(
→
자체 설정 페이지 추가
)
(
차이
)
← 이전 판
|
최신판
(
차이
) |
다음 판 →
(
차이
)
경고: 이 문서의 오래된 판을 편집하고 있습니다.
이것을 게시하면, 이 판 이후로 바뀐 모든 편집이 사라집니다.
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
=모듈 개발= ==모듈 개발 단계== 필수 * 모듈 설명자 생성 (사전준비) 모듈 빌더(Module Builder)라는 표준 모듈을 활성화하여, 모듈 설명자를 생성한다. ('''버그 이미지''' 클릭) 모듈 설명자 생성은 돌리바르 모듈 개발의 첫 번째 필수 단계로서, 개발하는 모듈의 기본적인 정보를 시스템에 제공하여 모듈이 정상적으로 작동하고 관리될 수 있도록 하는 중요한 과정입니다. 모듈 빌더를 사용하거나 수동으로 파일을 생성 및 수정하여 모듈 설명자를 만들 수 있으며, 생성 후에는 반드시 테스트를 거쳐 시스템에 제대로 인식되는지 확인해야 한ㄷ. :* 수동 모듈 설명자 생성 1. 모듈 디렉토리 생성 외부 모듈: htdocs/custom/ 코어 모듈: /htdocs/ 아래에 모듈 이름 디렉토리 생성하고 /core/modules 디렉토리고 구성 (즉, '''직접''' core 디렉토리 '''만들지 않음!''') 예) 를 들어, 'mymodule'이라는 모듈을 개발한다면 /htdocs/custom/mymodule/core/modules 또는 /htdocs/mymodule/core/modules와 같은 경로가 된다. 2. 템플릿 파일 복사 htdocs/modulebuilder/template 디렉토리에서 modMyModule.class.php 파일을 생성한 모듈의 /core/modules 디렉토리로 복사 3. 파일 이름 변경 복사한 modMyModule.class.php 파일의 이름을 개발하려는 모듈의 목적에 맞게 변경합니다. 이때 파일 이름은 반드시 mod로 시작하고 .class.php로 끝 나야 한다. 예) 예를 들어, 모듈 이름이 'NewName'이라면 파일 이름은 modNewName.class.php가 되어야 합니다 4.파일 내용 수정: 복사 및 이름 변경한 PHP 파일의 내용을 다음과 같이 수정합니다: ◦ 클래스 이름 변경: 파일 내용에 있는 모든 "modMyModule"을 모듈의 목적에 맞는 이름 (예: "modNewName")으로 변경합니다. 이 값 역시 항상 mod로 시작하고 영문자로만 구성되어야 합니다. ◦ 모듈 ID 설정: $this->numero = 100000; 라인에서 100000을 개발하는 모듈의 고유한 ID로 변경합니다. 다른 모듈과의 충돌을 피하기 위해 이미 예약된 ID 목록 페이지를 참고해야 합니다. ◦ 생성자 변수 수정: 생성자 (constructor)에 정의된 다른 변수들의 의미를 코드 내 주석을 참고하여 필요에 따라 수정합니다 모듈 설명자 테스트: 모듈 설명자 파일을 생성하고 수정한 후에는 돌리바르에서 해당 모듈이 인식되는지 테스트해야 합니다. # 돌리바르에 접속하여 설정(Setup) -> 모듈(Module) 페이지로 이동합니다. # 모듈 설명에 version 속성을 올바르게 설정했다면, 새로운 모듈이 목록에 나타나고 활성화/비활성화 옵션을 확인할 수 있습니다. # version 속성을 "develop" 또는 "experimental"로 설정한 경우, 모듈을 보기 위해서는 먼저 설정(Setup) -> 기타(Others) 페이지로 이동하여 MAIN_FEATURES_LEVEL을 1 (실험적 모듈) 또는 2 (개발 모듈)로 설정해야 합니 * 모듈 파일 경로 구조 정확한 파일 경로 구조는 돌리바르가 모듈의 다양한 구성 요소 (클래스, SQL 스크립트, 템플릿, 설정 페이지 등)를 올바르게 찾고 실행할 수 있도록 기반이 된다. 배포를 위한 ZIP파일 구조를 만들 때도, 현재 파일 구조를 사용하여 만든다. 파일 구조 • mymodule/build/: 컴파일 또는 패키지 빌드 관련 파일을 포함할 수 있습니다. • mymodule/core/modules/: 모듈 설명자 파일인 modMyModule.class.php를 포함해야 합니다. • mymodule/core/triggers: 모듈에서 제공하는 트리거 파일을 포함합니다. • mymodule/admin/: 모듈 설정 페이지 관련 파일을 포함합니다. • mymodule/class/: 모듈에서 제공하는 PHP 클래스 파일을 포함합니다. • mymodule/css/: 모듈의 CSS 파일을 포함합니다. • mymodule/js/: 새로운 기능을 위한 Javascript 파일을 포함합니다. • mymodule/docs/: 문서 및 라이선스 파일을 포함합니다. • mymodule/img/: 이미지 파일을 포함합니다. • mymodule/langs/xx_XX/: 특정 언어 (xx_XX)에 대한 언어 파일을 포함하며, 최소한 en_US를 포함하는 것이 좋습니다. • mymodule/lib/: 모듈에서 사용되는 라이브러리를 포함합니다. • mymodule/scripts/: 명령줄 도구나 스크립트를 포함하며, #!/usr/bin/env php로 시작해야 합니다. • mymodule/sql/: 새로운 테이블이나 인덱스를 추가하기 위한 SQL 파일을 포함합니다. • mymodule/theme/mytheme/: 모듈 자체의 테마/스킨을 제공하는 경우 관련 파일을 포함합니다. 이해 하기 위한 예) 모듈 설명자 파일이 위치하는 mymodule/core/modules/ 디렉토리에 존재함 데이터베이스 테이블을 추가하는 모듈이라면 SQL 파일은 반드시 mymodule/sql/ 디렉토리 PHP 관련 클래스는 mymodule/class/ 디렉토리 설정 페이지는 mymodule/admin/, 언어 파일은 mymodule/langs/xx_XX/에 위치함 * 자체 번호 매기기 규칙 추가 선택 사항 * SQL 테이블 및 PHP DAO 클래스 생성 SQL 테이블 및 PHP DAO 클래스 생성, 모듈의 데이터 모델을 정의하고, 데이터베이스와의 상호작용을 추상화하여 효율적이고 체계적인 데이터 관리한다. '''SQL 테이블 및 PHP DAO 클래스 생성 단계는 일반적으로 모듈 설명자를 생성하고 기본적인 파일 구조를 설정한 이후'''에 진행한다. 모듈이 관리할 데이터 구조가 결정되면, 데이터베이스 테이블로 정의하고 해당 데이터에 접근하고 조직하기 위한 PHP 클래스를 만든다. :* SQL 테이블 생성: • 모듈에서 자체 데이터를 관리해야 하는 경우, 데이터를 저장하기 위한 SQL 테이블을 정의해야 합니다. • 테이블 생성 및 데이터 로딩 스크립트는 모듈 디렉토리의 sql 하위 디렉토리 (mymodule/sql/)에 저장됩니다. ModuleBuilder를 사용하는 경우, 새로운 객체를 생성할 때 이 디렉토리와 SQL 파일이 자동으로 생성될 수 있습니다. • 모듈 설명자 파일의 init 함수 내에서 $this->_load_tables('/mymodule/sql/'); 라인이 주석 처리되어 있지 않은지 확인해야 합니다. 이 라인은 모듈이 활성화될 때 SQL 테이블을 로드하는 역할을 합니다. • 테이블 생성 명령은 테이블당 하나의 .sql 파일 (llx_mytable.sql) 원칙에 따라 작성하며, 필요한 경우 인덱스 관련 파일 (llx_mytable.key.sql)을 추가할 수 있습니다. 기존 테이블 구조는 install/mysql/tables 디렉토리에서 참고할 수 있습니다. • SQL 필드의 권장 유형 및 이름 규칙은 Language_and_development_rules#Table_and_fields_structures 페이지를 참조해야 합니다. • 초기 데이터를 추가/수정/삭제하기 위한 SQL 명령은 mymodule/sql/ 디렉토리 내의 data.sql 파일에 작성해야 합니다. • 문자열에는 큰따옴표가 아닌 작은따옴표를 사용해야 합니다 ('chaine' vs "chaine"). 이는 PostgreSQL과의 호환성을 위한 규칙입니다. • SQL 파일은 MySQL 데이터베이스에서 작동해야 하며, 다른 데이터베이스의 파일은 유지 관리되지 않지만 해당 데이터베이스 드라이버에 의해 즉석에서 읽고 변환됩니다. :*SQL 파일 테스트: • SQL 파일이 준비되면, 돌리바르 모듈 설정 페이지에서 해당 모듈을 비활성화한 후 데이터베이스에서 해당 테이블을 삭제 (존재하는 경우)하고 다시 활성화하여 테이블이 올바르게 생성되는지 테스트할 수 있습니다. • 테이블이 생성되지 않으면 스크립트를 직접 실행하거나 돌리바르 로그를 확인하여 오류를 찾아야 합니다. :*PHP DAO 클래스 생성: • DAO (Data Access Object) PHP 파일은 ModuleBuilder를 사용하여 객체를 생성한 후 자동으로 생성됩니다. • 수동으로 생성할 수도 있지만, ModuleBuilder 사용이 권장됩니다. 예제 파일은 htdocs/modulebuilder/templates/class/myobject.class.php에서 찾을 수 있습니다. • DAO 클래스에는 테이블 행의 삽입(Create), 조회(Read), 업데이트(Update), 삭제(Delete)를 수행하는 CRUD 메소드가 이미 포함되어 있습니다. • 생성된 DAO 클래스 파일을 편집하여 올바른 모듈 이름과 테이블 이름을 사용하도록 수정하고, 모듈의 class 하위 디렉토리에 저장해야 합니다. **다른 모듈 개발과 연관성 • PHP 화면 생성 및 수정: 생성된 SQL 테이블의 데이터를 보여주거나 편집하기 위한 새로운 PHP 화면을 만들거나 기존 화면에 필드를 추가할 수 있습니다. 이때 DAO 클래스의 메소드를 사용하여 데이터베이스에 접근하게 됩니다. • 탭 관리: 새로운 데이터 관련 정보를 기존 돌리바르 객체 (예: 송장, 제품) 화면에 새로운 탭으로 추가할 수 있습니다. 이 탭의 내용은 DAO 클래스를 통해 데이터베이스에서 가져올 수 있습니다. • 설정 페이지 추가: 모듈의 데이터 관련 설정을 사용자가 정의할 수 있는 설정 페이지를 만들 수 있습니다. • 메뉴 항목 정의: 새로운 데이터 관리 기능을 접근할 수 있는 메뉴 항목을 추가할 수 있습니다. • 권한 정의: 데이터 접근 및 조작에 대한 권한을 정의하여 보안을 강화할 수 있습니다. • 내보내기 정의: 모듈에서 관리하는 데이터를 내보낼 수 있는 기능을 추가할 수 있습니다. * 탭 관리 * PHP 화면 생성 또는 수정 * 자체 설명 페이지 추가 * 메뉴 항목 정의 * 자체 권한 추가 * 자체 박스 정의 * 자체 내보내기 정의 * CSS 스타일 정의 * Javascript 함수 추가 * 이벤트에 코드 실행 * hook 위치에 코드 삽입 * 문서 템플릿 추가 * 스킨 추가 ==모듈 생성도구== 모듈 생성 도구 (Module Builder) 는 돌리바 ERP CRM 모듈 개발 과정을 용이하게 함 모듈 생성 도구의 역할 및 중요성: • 주요 페이지 생성 간소화: 모듈 개발자는 모듈 생성 도구를 활용하여 '''모듈의 기본적인 페이지 구조'''를 더 쉽게 만들 수 있습니다. 이는 개발 시간을 단축하고 초기 개발 단계를 빠르게 진행할 수 있도록 돕습니다. • '''모듈 설명자 생성''' 지원: 과거에는 모듈 설명자 파일을 수동으로 생성하고 편집해야 했지만, 모듈 생성 도구가 도입되면서 이 과정을 자동화하거나 사용자 친화적인 인터페이스를 통해 관리할 수 있게 되었습니다. 모듈 설명자는 돌리바 시스템이 '''새로운 모듈을 인식하고 작동하는 데 필수적인 파일'''이므로, 이 도구의 존재는 모듈 개발의 첫 번째 중요한 단계를 더 쉽게 만듭니다. • SQL 구조 및 DAO 클래스 자동 생성: 모듈에서 자체 데이터를 관리해야 하는 경우, 모듈 생성 도구를 사용하면 '''데이터베이스 테이블을 정의하는 SQL 파일과 해당 테이블에 접근하고 조작하는 PHP DAO 클래스를 자동으로 생성'''할 수 있습니다. 특히 DAO 클래스 생성은 CRUD (Create, Read, Update, Delete) 메소드를 포함하는 복잡한 작업일 수 있지만, 모듈 생성 도구를 통해 몇 번의 클릭만으로 자동화할 수 있어 개발 편의성을 크게 향상시킵니다. • 기본 화면 템플릿 제공: 새로운 PHP 화면을 개발해야 할 때, 모듈 생성 도구는 기본적인 '''뼈대 코드 (skeleton templates)를 제공하여 개발자가 이를 기반으로 실제 화면 로직을 구현하는 데 집중'''할 수 있도록 돕습니다. 예시 템플릿 파일 (modulebuilder/myobject_page.php)을 활용하여 초기 화면 개발의 부담을 줄일 수 있습니다. • 개발 편의성 및 효율성 증대: 전반적으로 모듈 생성 도구는 반복적이고 기술적인 작업을 자동화하거나 간소화하여 '''개발자가 모듈의 핵심 기능 구현'''에 더 많은 시간과 노력을 집중할 수 있도록 지원합니다. 이는 모듈 개발 과정을 더욱 효율적이고 사용자 친화적으로 만들어줍니다. ==모듈 외부 템플릿== GIthub 활용에 대한 내용이다. Github를 이용하여 개발할 경우, 모듈 빌더와 비슷한 내용과 과정을 거치고, 업데이트된 예제 코드를 사용할 수 있다. ==모듈 설명자 생성 == 모듈 설명자는 마치, 내 것인데, 남들이 더 많이 사용하는 '''이름'''과 같은 것이다. Dolibarr와 이것의 모듈 들이 신규로 생성되는 모듈이 어떤 것인지 알고 사용할 수 있도록 설명하는 내용이다. :*모듈 설명자 파일의 중요성: * 모듈 식별 및 활성화: 모듈 설명자 파일은 돌리바 시스템이 '''새로운 모듈을 인식하고 활성화할 수 있도록 하는 핵심적인 역할'''을 합니다. 이 파일에 정의된 정보 ('''모듈 이름, ID, 버전''' 등)를 바탕으로 돌리바는 모듈을 목록에 표시하고 사용자가 활성화/비활성화할 수 있도록 합니다. * 모듈 기본 정보 정의:모듈 설명자 파일은 개발하는 모듈의 기본적인 '''속성'''을 정의합니다. 여기에는 모듈의 '''고유 ID (`$this->numero`)''', '''버전 정보''', 그리고 기타 생성자 변수들이 포함됩니다. 특히 모듈 ID는 다른 모듈과의 충돌을 피하기 위해 신중하게 선택해야 하며, 이미 예약된 ID 목록을 참고해야 합니다. * 모듈 구성 요소 연결: 모듈 설명자 파일은 모듈이 제공하는 다양한 기능 (메뉴 항목, 권한, 설정 페이지, 박스, 내보내기 등)들을 돌리바 시스템에 연결하는 역할을 합니다. 예를 들어, `$this->menu` 배열을 통해 새로운 메뉴 항목을 정의하고, `$this->rights` 배열을 통해 새로운 권한을 정의합니다. * '''모듈 구조 정의:''' 모듈 설명자 파일은 모듈의 기본적인 구조를 나타내며, 관련 파일들이 어느 디렉토리에 위치하는지를 시스템에 알려줍니다. 예를 들어, CSS 파일 경로는 `$this->module_parts` 배열을 통해 정의됩니다. :*모듈 설명자 파일 생성 방법: * 수동 생성: 과거에는 개발자가 직접 `modMyModule.class.php` 파일을 생성하고 필요한 변수들을 수동으로 수정해야 했습니다. * `/htdocs/custom/` *mymodule* `/core/modules` (외부 모듈) 또는 `/htdocs/` *mymodule* `/core/modules` (코어 모듈) 디렉토리를 생성합니다. * `htdocs/modulebuilder/template` 디렉토리의 `modMyModule.class.php` 파일을 생성한 디렉토리로 복사하고, 모듈의 목적에 맞게 파일명을 변경합니다 (예: `modNewName.class.php`). 파일명은 반드시 `mod`로 시작하고 `.class.php`로 끝나야 합니다. * 복사한 파일의 내용을 수정하여 모듈의 목적에 맞는 값으로 `"modMyModule"` 부분을 모두 변경합니다. 이 값은 항상 `mod`로 시작하고 영문자만 포함해야 합니다. * `$this->numero` 변수의 값을 모듈 ID로 변경하고, 충돌을 피하기 위해 예약된 ID 목록을 확인합니다. * 생성자의 다른 변수들을 모듈의 특성에 맞게 수정합니다. * 모듈 빌더 사용:돌리바 버전 9.0부터는 표준 모듈로 제공되는 "모듈 빌더 (ModuleBuilder)" 모듈을 사용하여 모듈 설명자를 생성하는 것이 권장됩니다 * 모듈 목록에서 "모듈 빌더" 모듈을 활성화한 후, 화면 오른쪽 상단의 "벌레" 이미지를 클릭하여 접근할 수 있습니다. * 모듈 빌더를 사용하면 사용자 인터페이스를 통해 모듈 설명자의 다양한 속성을 설정하고 자동으로 파일을 생성할 수 있습니다. :* 모듈 설명자 파일 테스트: 모듈 설명자 파일을 생성하거나 수정한 후에는 돌리바 시스템에서 제대로 인식되는지 테스트해야 합니다. * 돌리바에 접속하여 '''설정 -> 모듈''' 페이지로 이동합니다. `$this->version` 속성을 설정했다면, 새로운 모듈이 목록에 표시되고 활성화/비활성화 옵션이 나타나야 합니다. * `$this->version` 속성을 `"develop"` 또는 `"experimental"`로 설정한 경우, **설정 -> 기타 설정** 페이지에서 `MAIN_FEATURES_LEVEL`을 적절한 값 (1 또는 2)으로 설정해야 모듈이 표시됩니다. :* 모듈 개발의 더 큰 맥락에서 모듈 설명자: 모듈 설명자 파일은 '''모듈 개발의 시작점'''이며, 이후의 모든 개발 작업의 '''기반'''이 됩니다. 이 파일이 올바르게 정의되지 않으면 돌리바 시스템은 개발된 모듈을 제대로 인식하거나 작동시킬 수 없습니다. * 이전에 논의했던 '''모듈 생성 도구 (Module Builder)''' 는 이러한 모듈 설명자 파일 생성을 자동화하거나 간소화하여 개발 편의성을 크게 향상시킵니다. * 또한 '''GitHub Dolibarr Module Modèle'''과 같은 외부 모듈 템플릿은 '''미리 구성된 모듈 설명자 파일의 예시를 제공'''하여 개발자가 이를 참고하고 자신의 모듈에 맞게 수정하는 과정을 용이하게 합니다. '''모듈 설명자 파일'''을 통해 모듈의 기본적인 정보와 시스템 내에서의 역할을 정의하고, 이후 개발될 다양한 기능들을 돌리바와 연결할 수 있게 됩니다. ==모듈 파일 경로 구조== 모듈 파일 구성 내용 :• mymodule/: 모듈의 루트 디렉토리로서, 다른 모든 하위 디렉토리를 포함합니다. PHP 페이지 및 기타 사용자 정의 하위 디렉토리를 포함할 수 있습니다. 메타패키지 모듈의 경우 metapackage.conf 파일을 이 디렉토리에 위치시켜야 합니다. :• mymodule/build/: 컴파일 또는 패키지 빌드와 관련된 개발 파일을 저장하는 데 사용됩니다. :• mymodule/core/triggers/: 모듈에서 제공하는 트리거 관련 파일을 포함합니다. :• mymodule/admin/: 모듈의 설정 페이지 관련 PHP 파일을 저장합니다. :• mymodule/class/: 모듈에서 사용되는 PHP 클래스 파일을 포함합니다. :• mymodule/css/: 모듈의 CSS 스타일 시트 파일을 저장합니다. :• mymodule/js/: 모듈의 자바스크립트 파일을 저장하여 새로운 기능을 추가할 수 있습니다. :• mymodule/docs/: 모듈의 문서 및 라이선스 파일을 제공합니다. :• mymodule/img/: 모듈에서 사용되는 이미지 파일을 저장합니다. :• mymodule/langs/xx_XX/: 언어 파일을 저장합니다. 최소한 en_US 언어 파일을 포함하는 것이 좋습니다. :• mymodule/lib/: 모듈에서 사용되는 라이브러리 파일을 포함합니다. :• mymodule/scripts/: 명령줄 도구 또는 스크립트 파일을 제공합니다. PHP 스크립트는 #!/usr/bin/env php로 시작해야 합니다. :• mymodule/sql/: 모듈에서 새로운 테이블 또는 인덱스를 추가하는 SQL 파일을 저장합니다. 데이터 관리용 data.sql 파일도 이 디렉토리에 위치합니다. :• mymodule/theme/mytheme/: 모듈 자체의 테마/스킨 파일을 제공하는 경우 사용됩니다. :• mymodule/core/boxes/: 홈페이지에 표시할 새로운 박스 관련 파일을 저장합니다. :• mymodule/core/tpl/: 모듈에서 기존 템플릿 파일(.tpl)을 덮어쓰기 위한 파일을 저장합니다. = DB, SQL= SQL 테이블 생성의 필요성: : • 모듈 자체 데이터 관리: 돌리바의 표준 버전에서 제공하지 않는 고유한 데이터를 관리해야 하는 경우, 해당 데이터를 저장하기 위한 SQL 테이블을 정의해야 합니다. SQL 파일 생성 방법: :• SQL 디렉토리: 모듈의 SQL 테이블 생성 및 데이터 로딩 스크립트는 모듈 디렉토리 내의 sql 하위 디렉토리 ("mymodule/sql")에 저장됩니다. 모듈 빌더를 사용하는 경우, 새로운 객체를 생성할 때 이 디렉토리와 SQL 파일이 자동으로 생성될 수 있습니다. :• 파일 명명 규칙: 테이블 생성 명령이 담긴 파일은 테이블당 하나의 llx_mytable.sql 형식으로 이름을 지정하는 것이 원칙입니다. 필요에 따라 인덱스 생성을 위한 llx_mytable.key.sql 파일을 추가할 수 있습니다. 기존 파일의 예시는 install/mysql/tables 디렉토리에서 확인할 수 있습니다. :• 데이터 파일: 초기 데이터 추가, 수정 또는 삭제를 위한 SQL 명령은 mymodule/sql/ 디렉토리 내의 data.sql 파일에 포함해야 합니다. :• 중요 규칙: ::◦ SQL 필드의 권장 타입과 이름은 [https://wiki.dolibarr.org/index.php?title=Language_and_development_rules#Table_and_fields_structures Language_and_development_rules#Table_and_fields_structures] 페이지를 참고해야 합니다. ::◦ 문자열에는 큰따옴표 대신 작은따옴표를 사용해야 합니다 (예: 'chaine', "chaine"` 아님). 큰따옴표는 PostgreSQL에서 특정 의미를 가집니다. ::◦ SQL 파일은 MySQL 데이터베이스에서 작동해야 합니다. 다른 데이터베이스 (PostgreSQL 등)의 파일은 유지 관리되지 않지만, 해당 데이터베이스 드라이버에 의해 즉석에서 읽고 변환됩니다. :• 테이블 로딩: 모듈 설명자 파일의 init 함수 내에서 $this->_load_tables('/mymodule/sql/'); 라인이 주석 처리되어 있지 않은지 확인해야 모듈 활성화 시 SQL 파일이 실행되어 테이블이 생성됩니다. SQL 파일 테스트: :• SQL 파일이 준비되면, 돌리바 모듈 설정 페이지에서 해당 모듈을 비활성화했다가 다시 활성화하여 SQL 스크립트가 제대로 실행되는지 테스트할 수 있습니다. 모듈 활성화 시 테이블이 다시 생성되어야 합니다. 그렇지 않은 경우, 스크립트를 직접 실행하거나 돌리바 로그를 확인해야 합니다. PHP DAO 클래스 생성: : • 목적: PHP DAO 클래스는 모듈의 자체 데이터를 관리하기 위한 CRUD (Create, Read, Update, Delete) 작업을 수행하는 메서드를 제공합니다. : • 생성 방법: ::◦ 모듈 빌더 권장: 모듈 빌더에서 객체를 생성하면 DAO PHP 파일이 자동으로 생성됩니다. 이는 가장 권장되는 방법입니다. ::◦ 수동 생성 (선택 사항): 기존 객체 클래스를 복사하여 수동으로 생성할 수도 있습니다. 예시는 htdocs/modulebuilder/templates/class/myobject.class.php에서 찾을 수 있습니다. 이 경우, 클래스 파일 내에서 정확한 모듈 이름과 테이블 이름을 사용하도록 수정하고, 모듈의 class 하위 디렉토리에 저장해야 합니다. :• CRUD 메서드: 생성된 DAO 클래스에는 테이블 행의 삽입 (insert), 조회 (fetch), 업데이트 (update), 삭제 (delete)를 위한 기본적인 CRUD 메서드가 이미 포함되어 있습니다. 돌리바 ERP CRM 모듈 개발의 더 큰 맥락에서 SQL 테이블 및 PHP DAO 클래스의 중요성: :• 데이터 관리의 핵심: 모듈이 자체 데이터를 효율적이고 안전하게 관리하기 위한 핵심적인 구성 요소입니다. SQL 테이블은 데이터를 영구적으로 저장하는 역할을 하며, PHP DAO 클래스는 이 데이터에 접근하고 조작하는 인터페이스를 제공합니다. :• 모듈 기능 확장: 표준 돌리바 기능 외에 새로운 데이터 구조와 기능을 추가할 수 있도록 합니다. 예를 들어, 특정 비즈니스 로직에 필요한 추가 정보를 저장하고 관리하는 데 사용될 수 있습니다. :• 모듈 독립성 및 재사용성: DAO 패턴을 사용하면 데이터 접근 로직이 비즈니스 로직에서 분리되어 코드의 유지보수성과 재사용성을 향상시킵니다. 데이터베이스 구조가 변경되더라도 DAO 클래스만 수정하면 되므로, 전체 코드에 미치는 영향을 최소화할 수 있습니다. :• 모듈 빌더 활용: 돌리바의 모듈 빌더는 SQL 테이블 설계와 기본적인 DAO 클래스 생성을 자동화하여 개발 과정을 더욱 효율적으로 만들어 줍니다. :• 데이터베이스 상호 작용: DAO 클래스를 사용하지 않고 직접 데이터베이스에 접근해야 하는 경우 (예: 복잡한 JOIN 또는 필터링), 제공된 출처의 예시처럼 $db 객체의 query, fetch_object 등의 메서드를 사용하여 SQL 쿼리를 실행하고 결과를 처리할 수 있습니다. 하지만 이러한 직접적인 데이터베이스 접근은 DAO 클래스를 사용하는 방식보다 유지보수성이 낮아질 수 있습니다. =화면 UI= ==탭 관리== ## 탭 관리에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 **탭 관리**를 돌리바 ERP CRM 모듈 개발에서 **선택적인 기능**으로 설명하며, 주로 **기존 객체 (송장, 주문, 견적 등) 보기 화면에 새로운 탭을 추가하거나 기존 탭을 제거**하고, **자체 모듈 페이지 내에 표준 객체의 탭 메뉴를 표시**하는 방법에 대해 다루고 있습니다. **새로운 탭 추가 및 기존 탭 제거:** * 모듈 설명자 파일에 정의된 **`$this->tabs` 배열**을 수정하여 객체 보기 화면에 새로운 탭을 추가하거나 기존 탭을 제거할 수 있습니다. * `$this->tabs` 배열은 여러 개의 문자열로 구성된 리스트이며, 각 문자열은 하나의 탭을 나타냅니다. * 각 문자열은 **":" (콜론)으로 구분된 6개의 부분**으로 이루어져 있습니다: 1. **파트 1:** 탭을 표시할 **객체 타입** (예: 'thirdparty', 'invoice', 'product', 'order' 등). 2. **파트 2:** 탭을 **추가**할 때는 **`+tabname1`** 과 같은 형식으로 고유한 코드를 지정하고, **제거**할 때는 **`-tabname`** 과 같이 기존 탭의 코드를 지정합니다. 3. **파트 3:** 탭의 **제목**입니다. 하드코딩된 문자열 또는 모듈 언어 파일에 정의된 번역 코드를 사용할 수 있습니다. 4. **파트 4:** 번역 코드가 정의된 **언어 파일** (`*.lang`)의 이름과 모듈명 (예: `mylangfile@mymodule`). `@mymodule`이 붙으면 모듈의 `langs/code_CODE/` 디렉토리에서, 그렇지 않으면 돌리바 기본 `langs/code_CODE/` 디렉토리에서 파일을 찾습니다. 5. **파트 5:** 탭의 **표시 조건**입니다. 예를 들어 특정 권한을 가진 사용자에게만 보이도록 설정하거나 (`$user->rights->mymodule->read`), 항상 보이도록 `1`을 설정할 수 있습니다. 6. **파트 6:** 탭을 클릭했을 때 **표시될 페이지의 URL**입니다 (`/mymodule/mypagetab1.php`). `__ID__` 문자열은 자동으로 해당 객체의 ID로 치환됩니다. * 기존 탭의 `'tabname'`을 확인하려면 `'core/lib/module.lib.php'` 파일의 `product_prepare_head` 함수 내에서 `$head[$h]` 부분을 참조해야 합니다. **자체 페이지에 표준 탭 메뉴 표시:** * 자체 모듈 페이지 내에 제품, 거래처 등 표준 객체의 모든 탭을 표시하려면 다음과 같은 단계를 따라야 합니다: 1. **필요한 파일 포함:** 각 객체 타입별로 해당하는 클래스 파일과 라이브러리 파일을 `require_once()` 를 사용하여 포함해야 합니다. 제공된 예시에는 거래처, 제품, 송장에 대한 파일 포함 예시가 있습니다. 2. **객체 생성 및 로드:** URL에서 전달된 ID를 이용하여 해당 객체 클래스의 인스턴스를 생성하고 `fetch()` 메서드를 사용하여 데이터베이스에서 객체 정보를 로드합니다. 3. **표시할 탭 목록 가져오기:** `XXX_prepare_head($obj)` 함수를 사용하여 표시할 탭 정의 배열을 가져옵니다. `XXX`는 객체 이름이며, 함수에 로드된 객체 인스턴스를 파라미터로 전달합니다. 4. **탭 표시:** `dol_fiche_head()` 함수를 사용하여 가져온 탭 배열 (`$head`)을 화면에 표시합니다. 활성화할 탭, 제목, 아이콘 등을 설정할 수 있습니다. * `dol_fiche_head()` 함수는 탭 영역 아래에 해당하는 HTML `<div>` 요소를 시작하며, 탭 영역을 닫으려면 PHP 페이지에서 `</div>` 태그를 사용해야 합니다. **돌리바 ERP CRM 모듈 개발의 더 큰 맥락에서 탭 관리의 중요성:** * **사용자 인터페이스 맞춤화:** 탭 관리를 통해 모듈 개발자는 **기존 돌리바 인터페이스를 확장하고 맞춤화**하여 사용자가 필요한 정보에 더욱 쉽고 빠르게 접근할 수 있도록 합니다. 새로운 기능을 제공하는 모듈에서 관련 정보를 별도의 탭으로 구성하여 **정보를 논리적으로 그룹화**하고 사용자 경험을 향상시킬 수 있습니다. * **정보 구성 및 접근성 향상:** 특히 많은 정보를 표시해야 하는 객체 화면에서 탭을 사용하면 **화면을 깔끔하게 유지**하고 **사용자가 원하는 정보만 선택적으로 볼 수 있도록** 돕습니다. 예를 들어, 특정 모듈에서 관리하는 추가 정보 필드를 기존 객체 화면의 새로운 탭에 통합하여 사용성을 높일 수 있습니다. * **기존 돌리바 객체와의 통합:** 모듈에서 추가하는 기능이 기존 돌리바 객체와 관련이 있을 때, 탭 관리를 통해 **자체 기능을 기존 워크플로우에 자연스럽게 통합**할 수 있습니다. 예를 들어, 특정 프로젝트 관련 정보를 주문 또는 송장 화면의 새로운 탭에서 보여주는 방식으로 통합할 수 있습니다. * **모듈 기능의 확장:** 새로운 탭을 통해 모듈은 **추가적인 정보 표시, 데이터 편집, 또는 특정 액션 실행을 위한 사용자 인터페이스를 제공**할 수 있습니다. 이는 모듈의 기능을 더욱 풍부하게 만들고 사용자에게 더 많은 가치를 제공합니다. * **일관성 유지:** 자체 모듈 페이지에서 `dol_fiche_head()` 함수를 사용하여 표준 탭 메뉴를 표시함으로써, **돌리바의 전반적인 사용자 인터페이스와 일관성을 유지**하고 사용자의 혼란을 줄일 수 있습니다. **결론적으로, 탭 관리는 돌리바 ERP CRM 모듈 개발에서 **사용자 인터페이스를 개선하고 정보를 효율적으로 구성하며, 모듈의 기능을 기존 돌리바 시스템에 자연스럽게 통합하는 데 중요한 역할**을 합니다. `$this->tabs` 배열을 이용한 탭 추가/제거와 `dol_fiche_head()` 함수를 활용한 표준 탭 표시 기능은 모듈 개발자가 더욱 편리하고 사용자 친화적인 모듈을 만들 수 있도록 지원합니다.** ==PHP 화면 생성 및 수정 == ## PHP 화면 생성 또는 수정에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **PHP 화면을 생성하거나 수정하는 것**을 **선택적인 기능**으로 설명하며, 주로 **새로운 기능을 구현하기 위해 필요한 사용자 인터페이스를 구축하거나 기존 화면에 추가적인 필드를 통합**하는 방법에 대해 다루고 있습니다. **새로운 PHP 화면 생성:** * 모듈의 목적이 새로운 기능을 추가하여 새로운 화면이 필요한 경우, PHP 화면을 생성해야 합니다. * 새로운 사용자 화면을 생성하려면 모듈 디렉토리 내에 (예: `/htdocs/mymodule/`) PHP 파일을 저장할 하위 디렉토리를 생성해야 합니다. * **`modulebuilder/myobject_page.php`** 에 제공된 스켈레톤 템플릿 파일을 복사하여 새로운 페이지 파일의 시작점으로 사용할 수 있습니다. * 새로운 PHP 파일에서 **`main.inc.php` 파일을 로드**하는 것이 중요합니다. 이 파일은 돌리바 환경 변수와 권한을 로드하며 `$user`, `$conf`, `$db`, `$langs` 객체를 포함합니다. 제공된 코드 예시는 다양한 상황에서 `main.inc.php` 파일을 로드하기 위한 여러 시도를 보여줍니다. * 모듈에 특화된 클래스나 라이브러리를 포함하려면 직접 `include_once`를 사용하는 대신 **`dol_include_once()` 함수**를 사용해야 합니다. 돌리바에서 제공하는 클래스를 포함하려면 `require_once DOL_DOCUMENT_ROOT . '/core/class/doli.class.php';` 와 같은 구문을 사용합니다. * 화면 표시를 위한 코드는 `main.inc.php` 로드 후 추가해야 합니다. * 명령행 스크립트 개발은 별도의 안내를 참조해야 합니다. **기존 폼 수정:** * 기존 요소 (예: 카테고리, 송장, 견적 등)의 폼에 더 많은 필드를 추가해야 할 수 있습니다. * **무거운 해결책**으로는 해당 요소 생성에 사용되는 모든 페이지를 **자체 페이지로 대체**하는 방법이 있습니다. 이는 "새 요소" 메뉴 항목을 비활성화하고 자체 항목을 추가하며, 기존 탭을 자체의 전체 페이지로 대체하는 것을 의미합니다. 이 방법은 페이지의 모든 것을 변경할 수 있다는 장점이 있지만, 더 많은 작업이 필요합니다. * **더 가벼운 해결책**으로는 **훅 시스템**을 사용하여 기존 필드의 끝에 필드를 추가하는 방법이 있습니다. 이를 위해서는 새로운 필드의 값을 저장할 자체 테이블을 만들고 CRUD (Create/Read/Update/Delete) 메서드를 가진 클래스를 생성해야 합니다. 그런 다음 훅을 사용하여 폼에 새로운 필드를 추가합니다. 훅 사용에 대한 일반적인 문서는 [Hooks_system#Implement_the_Hook](https://wiki.dolibarr.org/index.php?title=Hooks_system#Implement_the_Hook) 장을 참조해야 합니다. **데이터베이스 접근:** * 자체 테이블의 데이터를 편집하려면 이전에 생성한 PHP 클래스를 사용합니다. * 전용 PHP 클래스가 없는 테이블에 접근해야 하는 경우 (예: 특정 JOIN 또는 필터를 사용하여 레코드 목록을 가져오려는 경우), `$db` 객체를 사용하여 직접 SQL 쿼리를 실행할 수 있습니다. 삽입, 업데이트, 삭제를 위한 트랜잭션 처리 예시와 데이터를 읽기 위한 코드 예시가 제공됩니다. **페이지 스타일 정의:** * 자체 페이지의 모양을 돌리바 테마와 일치시키려면 **돌리바 CSS 스타일**을 사용해야 합니다. `liste_titre`, `pair`, `impair`, `flat`, `button` 등의 CSS 클래스 사용 예시가 제공됩니다. **돌리바 날짜 선택기 사용:** * 자체 페이지에서 돌리바 날짜 선택기 (달력 팝업)를 사용하려면 `$form = new Form($db);` 를 사용하여 `Form` 클래스의 인스턴스를 생성하고 `$form->select_date()` 메서드를 호출해야 합니다. 날짜 선택기는 HTML `<form>` 내에 포함되어야 하며, 폼 전송 후 값을 가져오는 방법도 설명되어 있습니다. **템플릿 파일 (tpl) 덮어쓰기:** * 모듈에서 tpl 파일을 덮어쓰려면 모듈 설명자의 `$this->module_parts` 배열에 `'tpl' => 1` 을 선언한 후, 덮어쓸 tpl 파일을 `mymodule/core/tpl` 디렉토리에 넣으면 됩니다. **돌리바 ERP CRM 모듈 개발의 더 큰 맥락에서 PHP 화면 생성 및 수정의 중요성:** * **기능 확장 및 맞춤화:** PHP 화면 생성 및 수정은 돌리바의 기본 기능을 넘어서는 **새로운 비즈니스 로직 및 데이터 관리 기능을 구현**하는 데 필수적입니다. 모듈 개발자는 이를 통해 특정 요구 사항에 맞는 사용자 인터페이스를 구축하고 워크플로우를 맞춤화할 수 있습니다. * **사용자 경험 향상:** 잘 설계된 PHP 화면은 사용자에게 **직관적이고 효율적인 작업 환경**을 제공하여 전반적인 사용자 경험을 향상시킵니다. 새로운 정보를 표시하거나 기존 정보를 편집하는 방식을 개선하여 사용 편의성을 높일 수 있습니다. * **데이터 관리 효율성 증대:** 새로운 화면을 통해 모듈은 **특정 데이터를 효과적으로 수집, 표시 및 관리**할 수 있도록 합니다. 이는 데이터의 정확성을 높이고 정보 접근성을 향상시켜 업무 효율성을 증대시킵니다. * **기존 시스템과의 통합:** 폼 수정 기능을 통해 모듈은 **자체 기능을 기존 돌리바 시스템의 흐름에 통합**할 수 있습니다. 예를 들어, 기존 주문 생성 화면에 추가적인 정보를 입력받는 필드를 추가하여 모듈의 기능을 자연스럽게 사용할 수 있도록 합니다. * **다양한 사용자 인터페이스 제공:** 새로운 PHP 화면과 스타일 정의를 통해 모듈은 **다양한 형태와 기능의 사용자 인터페이스**를 제공할 수 있습니다. 이는 다양한 사용자의 요구 사항을 충족시키고 모듈의 활용도를 높입니다. **결론적으로, PHP 화면 생성 및 수정은 돌리바 ERP CRM 모듈 개발에서 **핵심적인 부분**을 차지하며, 모듈의 **기능 확장, 사용자 경험 향상, 데이터 관리 효율성 증대**에 직접적으로 기여합니다. 개발자는 제공된 가이드라인과 돌리바의 개발 규칙을 준수하여 안정적이고 사용자 친화적인 모듈을 개발해야 합니다.** ==자체 설정 페이지 추가== ## 자체 설정 페이지 추가 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 설정 페이지를 추가하는 것**을 **선택적인 기능**으로 설명하며, 모듈의 **적절한 설정을 위해 사용자가 제공해야 하는 파라미터가 필요한 경우**에 해당됩니다. **자체 설정 페이지 추가 방법:** * **필요 조건:** 모듈이 여러 설정 파라미터를 필요로 하는 경우, 이러한 옵션을 편집하고 **`llx_const` 테이블**에 저장할 페이지를 생성해야 합니다. * **페이지 생성:** **`mymodule_setuppage.php`** 와 같은 이름의 PHP 페이지를 생성하여 설정 옵션을 업데이트할 수 있는 폼을 표시합니다. 파라미터를 읽고 저장하는 방법을 참고하기 위해 **/admin** 디렉토리의 기존 페이지를 활용하는 것이 좋습니다. 이 PHP 페이지는 모듈의 **/admin** 디렉토리 (예: `mymodule/admin/mymodule_setuppage.php`)에 위치해야 합니다. * **모듈 설명자 파일 수정:** 모듈의 설명자 파일 내에서 **`config_page_url`** 변수를 수정하여 이 PHP 페이지의 이름을 설정해야 합니다. * 페이지가 **/admin/** 디렉토리에 있는 경우, 경로는 필요하지 않습니다 (예: `$this->config_page_url = array("mymodule_setuppage.php");`). * 페이지가 **/mymodule/admin/** 디렉토리에 있는 경우, `@mymodule` 를 포함하여 경로를 지정해야 합니다 (예: `$this->config_page_url = array("mymodule_setuppage.php@mymodule");`). * **페이지 테스트:** **홈->설정->모듈** 페이지로 이동하면 모듈 라인의 끝에 설정 페이지로 이동하는 그림이 나타납니다. 이를 클릭하면 설정 페이지에서 파라미터를 보고 편집할 수 있어야 합니다. == 메뉴 항목 정의 == ==자체 권한 추가== ==자체 박스 정의== ==자체 내보내기 정의== ==CSS 스타일 정의== ==Javascript 함 수 추가== =동작 삽입= ==Dolibarr 이벤트에 코드 실행(트리거)== ==Dolibarr hook 위치에 코드 삽입== ==자체 번호 매기기 규칙 추가== ==문서 템플릿 추가== ==스킨 추가== ==코딩 규칙 및 미리 정의 된 함수== =설치 및 배포= ==모듈 배포 및 설치 패키지 생성== ==DoiiStore 외부 모듈 활성화 조건==
요약:
LS Taiwan에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다(자세한 사항은
LS Taiwan:저작권
문서를 보세요).
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
검색
검색
Dolibarr 모듈 개발
편집하기
새 주제