> ## Documentation Index
> Fetch the complete documentation index at: https://make.edicus.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 달력 상품

> 달력 줄 설정, 시작 연월과 개월 수, 날짜 변경, Calendar 메뉴의 기념일·음력 데이터와 템플릿 준비

달력은 편집기가 프로젝트를 만들 때 템플릿의 월 페이지를 개월 수만큼 복사하고 날짜를 채우는 상품입니다. 상품의 **달력** 줄, 띄우기 옵션의 시작 연월, Edicus Manager **Calendar** 메뉴의 기념일 데이터, 달력용으로 만든 템플릿이 함께 필요합니다.

## 배우는 것

* 달력 줄의 네 항목과 날짜 변경 동작
* 시작 연월과 개월 수를 정하는 방법
* Calendar 메뉴에서 기념일과 음력 표시를 관리하는 방법

## 직접 해보기

<Steps>
  <Step title="상품을 만듭니다">
    [상품과 ps\_code 만들기](/docs/products/create)대로 달력 상품과 사이즈를 만듭니다.
  </Step>

  <Step title="페이지 설정을 정합니다">
    **페이지** 그룹에서 `multi-page`를 켜고 `page-menu`와 `grouping`은 끕니다. 사이즈의 `paging-rule`은 `none`으로 둡니다.
  </Step>

  <Step title="달력 줄을 켭니다">
    아래 **상품의 달력 줄**에서 `resolve-date`를 켭니다. 사용자가 시작 연월을 바꾸게 하려면 `change-date`도 켭니다.
  </Step>

  <Step title="달력 템플릿을 만듭니다">
    아래 **템플릿 준비**의 마스터 이름(`Calendar-month#1` 등)으로 월 페이지를 표시합니다.
  </Step>

  <Step title="Calendar 메뉴에 데이터를 넣습니다">
    아래 **Calendar 메뉴**에서 기념일 카테고리와 날짜를 등록하고 기본 선택을 정합니다.
  </Step>

  <Step title="템플릿을 올립니다">
    [템플릿 업로드와 수정](/docs/templates/upload)대로 이 상품의 `ps_code`로 올리고 공개합니다.
  </Step>

  <Step title="Test Order로 확인합니다">
    [테스트 주문과 렌더링](/docs/templates/test-render)대로 주문을 만들어 날짜, 기념일, 사진이 생산 파일에 맞게 나오는지 봅니다.
  </Step>
</Steps>

<Note>
  시작 연월(`cal_date`)과 개월 수(`calendar.range`)는 띄울 때 정합니다. 아래 **시작 연월과 개월 수**의 값을 연동 담당자에게 넘기세요.
</Note>

## 상품의 달력 줄

**상품 설정 → 출력 · 색상 → 달력** 줄입니다.

| 화면 이름 | 저장 키 | 기본값 | 설명 |
| - | - | - | - |
| `resolve-date` | `resolveDate` | 꺼짐 | 새 프로젝트를 만들 때 월 페이지를 개월 수만큼 만들고 날짜, 기념일, 음력을 채웁니다. 달력 템플릿은 이 값을 꺼 두면 월 페이지가 하나도 만들어지지 않습니다 |
| `change-date` | `changeDate` | 꺼짐 | 편집기에 **달력 설정** 버튼을 보여 줍니다. 데스크톱은 상단 메뉴, 기존 모바일 UI(`mobile: true`)와 신규 모바일 UI(`mobile: 'm2'`)는 머리글에 있습니다. `resolve-date`를 켜야 열립니다 |
| `change-mode` | `changeDateMode` | `default` | 달력 설정에서 시작 연월을 바꿀 때 편집 내용을 어디에 남길지입니다. 아래를 보세요. `change-date`를 켜야 열립니다 |
| `year-type` | `yearType` | `default` | 달력 설정 창의 연도 목록입니다. `change-date`를 켜야 열립니다 |

| `year-type` | 연도 목록 |
| - | - |
| `default` | 작년, 올해, 내년 세 개입니다 |
| `single-10` | 한 해만 보여 줍니다. 1~~10월에는 올해, 11~~12월에는 내년입니다 |

날짜는 프로젝트를 처음 만들 때 한 번 채우고 프로젝트에 저장합니다. 다시 열 때는 새로 만들지 않습니다.

## 시작 연월과 개월 수

시작 연월은 띄우기 옵션 `cal_date`로 넘깁니다. `option_string`의 `cal_date`도 같습니다. 형식은 [띄우기 옵션](/docs/reference/launch-options#cal_date-형식)와 같습니다.

| `cal_date` | 결과 |
| - | - |
| `2027-1` | 2027년 1월부터 12개월 |
| `2027-1-14-0-0` | 2027년 1월부터 14개월 |
| `2027-1-12-1-1` | 2026년 12월부터 2028년 1월까지 14개월 |

다섯 칸 형식은 `연-월-개월수-앞에더할개월-뒤에더할개월`입니다. 세 칸이나 네 칸이면 개월 수 부분을 무시하고 12개월로 만듭니다. `cal_date`를 주지 않으면 1월부터 만들고, 오늘이 1~~6월이면 올해, 7~~12월이면 내년입니다.

개월 수는 `calendar.range`로도 정합니다. 사이즈의 [사이즈 고급 옵션](/docs/products/size-options#edicus-options)나 띄우기 옵션 `options`에 넣습니다. 둘 다 있으면 띄우기 옵션이 이깁니다. `range`가 있으면 `cal_date`의 개월 수보다 우선합니다.

```json theme={null}
{
  "calendar": {
    "range": "12-1-0"
  }
}
```

`range`는 `개월수-앞에더할개월-뒤에더할개월` 세 칸입니다. `cal_date=2027-1`과 위 `range`면 2026년 12월부터 2027년 12월까지 13개월입니다.

개월 수는 띄울 때 한 번 정해지고 편집 중에는 바뀌지 않습니다. 달력 설정 창도 시작 연월만 바꾸고 개월 수는 처음 값을 그대로 씁니다.

<Warning>
  달력 상품에는 `page-menu`와 `grouping`을 켜지 않습니다. 페이지 메뉴로 추가한 페이지는 현재 월 페이지를 복사할 뿐이라 날짜가 새로 만들어지지 않고 같은 달이 두 번 생깁니다. 사이즈의 [페이지와 책등](/docs/products/pages#페이징-규칙)도 달력에는 쓰지 않습니다.
</Warning>

## 달력 설정과 change-mode

사용자가 **달력 설정**을 누르면 연도, 시작 월, 기념일 카테고리, 기본 음력 표시를 고르는 창이 열립니다. 카테고리와 음력 칸은 템플릿에 날짜 문구 자리(`DAY_TEXT`)가 있을 때만 보입니다. **적용**하면 같은 개월 수로 다시 만듭니다.

| `change-mode` | 편집 내용 |
| - | - |
| `default` | 연월을 기준으로 남깁니다. 2027년 2월 페이지에 넣은 사진은 2027년 2월 페이지에 그대로 있습니다. 새 범위에서 빠진 월의 페이지는 지우고, 새로 들어온 월은 템플릿 그대로 만듭니다 |
| `keep-page` | 페이지 위치를 기준으로 남깁니다. 첫 번째 월 페이지의 사진은 첫 번째 위치에 남고 날짜만 바뀝니다. 날짜별 메모 글상자는 지우고 다시 만듭니다 |

적용 뒤 각 방식의 주의 문구를 알림으로 보여 줍니다.

### 연간 달력의 연도

연간 달력 페이지는 시작 연월의 연도를 씁니다. 템플릿에 연간 달력 페이지가 하나뿐이고 월 페이지 뒤에 있으면 다음 해를 씁니다. 템플릿에서 연간 달력에 `YEAR` 필터를 `THIS`, `NEXT`, `PREV`로 주면 시작 연도의 올해, 내년, 작년으로 고정합니다.

그래서 시작을 2026년 12월로 고르면 표지 다음의 연간 달력은 2026년으로 나옵니다. `year-type`은 달력 설정 창의 연도 목록만 바꾸므로 이 결과와 관계없습니다. 2027년 연간 달력에 2026년 12월부터 시작하는 달력을 만들려면 `cal_date=2027-1`로 띄우고 `calendar.range`를 `12-1-0`으로 두어 앞에 한 달을 더합니다.

## 템플릿 준비

달력 템플릿은 InDesign 마스터 이름으로 달력 페이지를 표시합니다. 마스터 이름의 형식은 [페이지와 상위 페이지(마스터)](/docs/templates/pages#상위-페이지-이름으로-페이지-종류-정하기)과 같습니다.

| 마스터 이름 | 의미 |
| - | - |
| `Calendar-month#1` | 한 달의 첫 번째 페이지입니다. 이 페이지가 나올 때마다 새 월 묶음이 시작됩니다 |
| `Calendar-month#2` | 같은 달의 두 번째 페이지(뒷면 등)입니다 |
| `Calendar-year#1` | 연간 달력 페이지입니다. `Calendar-year#1@{YEAR:NEXT}`처럼 연도를 고정합니다 |

* 템플릿을 올리면 월 페이지는 문서에서 빠져 보관되고, 첫 월 페이지가 있던 자리에 개월 수만큼 다시 들어갑니다. 표지와 연간 달력은 그대로 남습니다.
* 월 묶음을 하나만 만들면 모든 달이 같은 디자인입니다. 둘이면 짝수 달과 홀수 달이 번갈아 쓰이고, 12개면 달마다 다른 디자인입니다. 월 번호를 묶음 수로 나눈 나머지로 고릅니다.
* 날짜 칸은 `CalendarBox` 레이어에 `종류_위치_크기` 형식 이름을 단 사각형으로 만듭니다. 이름 형식이 틀리면 업로드 변환이 실패합니다.
* 기념일 문구는 `DAY_TEXT` 개체 자리에 들어갑니다. 휴일과 요일 색은 개체 이름에 `^`를 붙인 색 정의를 따릅니다.

## Calendar 메뉴

Edicus Manager 왼쪽 메뉴의 **Calendar**는 파트너 관리자 계정(partner-admin)에 보입니다. 기념일과 휴일 데이터를 관리합니다.

화면은 세 칸입니다. 왼쪽은 달력 그룹, 가운데는 그룹의 카테고리, 위쪽은 그룹 옵션입니다. 그룹이 없으면 `default` 그룹과 `basic`(기본) 카테고리를 보여 줍니다. 편집기는 항상 `default` 그룹만 읽습니다. 화면에는 그룹을 추가하는 버튼이 없습니다.

### 그룹 옵션

옵션 버튼을 눌러 값을 고르면 바로 저장합니다.

| 화면 표시 | 저장 키 | 기본값 | 편집기 동작 |
| - | - | - | - |
| `day text mode` | `dayTextMode` | `horizontal` | 한 날짜에 문구가 여럿이면 `horizontal`은 띄어쓰기로, `vertical`은 줄바꿈으로 잇습니다 |
| `lunar date check` | `lunarDateCheck` | `true` | 기본 음력 표시를 켠 채로 시작합니다. 사용자는 달력 설정 창에서 바꿉니다 |
| `lunar date position` | `lunarDatePosition` | `first` | 음력 표시를 문구 앞(`first`)이나 뒤(`last`)에 붙입니다 |
| `lunar date period` | `lunarDatePeriod` | `15` | 음력 표시를 붙일 날입니다. `15`는 음력 1일과 15일, `10`은 1, 10, 20일, `5`는 1일과 5의 배수 날입니다. 30일에는 붙이지 않습니다 |
| `lunar line break none` | `lunarLineBreakNone` | `false` | `true`면 앞에 붙인 음력 표시와 문구 사이를 줄바꿈 대신 띄어쓰기로 잇습니다 |
| `edit version` | `editVer` | `default` | `v2 (multi-year)`면 템플릿의 연도, 월 번호, 월 이름 개체를 모두 채웁니다. `default`는 종류마다 첫 개체만 채웁니다 |

음력 표시는 `윤`(윤달일 때)과 `월.일` 형식입니다. 음력 날짜로 등록한 기념일이 있는 날에도 붙습니다.

### 카테고리

| 버튼, 메뉴 | 동작 |
| - | - |
| **Add Category** | 카테고리 코드(겹칠 수 없음)와 이름으로 카테고리를 만듭니다 |
| 카테고리 메뉴의 `default` | 기본 선택을 켜고 끕니다. 새 프로젝트는 기본 선택된 카테고리의 날짜만 채웁니다 |
| 카테고리 메뉴의 `hide` | 달력 설정 창의 카테고리 목록에서 숨깁니다 |
| 카테고리 메뉴의 `delete`, `up`, `down` | 카테고리와 그 날짜를 지우거나 순서를 바꿉니다 |
| `dp-name`, **dp-name i18n** | 달력 설정 창에 보일 이름과 다국어 이름입니다. **Update Category Option**으로 저장합니다 |

`basic` 카테고리는 기본 선택 해제, 숨김, 삭제를 할 수 없습니다.

### 날짜

카테고리를 고르면 한 해의 날짜 목록이 나옵니다. 위쪽 화살표로 연도를 바꿉니다.

| 칸 | 저장 키 | 설명 |
| - | - | - |
| Year, Month, Day | `date` | 날짜입니다. 음력이면 음력 월일을 넣습니다 |
| 음력 스위치 | `isLunar` | 켜면 음력 날짜로 저장합니다. 편집기가 양력으로 바꿔 그 날에 표시합니다 |
| `text` | `text` | 날짜 칸에 넣을 문구입니다 |
| 휴일 스위치 | `isHoliday` | 켜면 그 날을 휴일 색으로 그립니다 |

**Add Date**로 추가하고 **Apply**로 저장합니다. 행의 메뉴로 수정, 삭제, **copy to next year**(같은 월일로 다음 해에 복사)를 합니다. 그룹 옵션과 카테고리는 파트너 설정에, 날짜는 Edicus 서버에 카테고리별로 저장합니다.

편집기는 프로젝트를 만들거나 달력 설정을 적용할 때 시작 연도 전해 1월 1일부터 3년 뒤 12월 31일까지의 날짜를 읽습니다. Manager에서 날짜를 고쳐도 이미 만든 프로젝트는 달력 설정을 다시 적용해야 바뀝니다.

## 저장 결과

저장하면 `save-doc-report`([편집기 이벤트](/docs/sdk/events))의 `docInfo.calendarInfo`에 `year`, `month`가 들어 있습니다. 쇼핑몰에서 사용자가 고른 시작 연월을 확인할 때 씁니다.

## 됐는지 확인

<Check>
  Manager **Resource**에서 달력 템플릿을 고르고 **Demo**로 열었을 때 월 페이지가 12개월만큼 생기고, 기본 선택한 카테고리의 기념일과 음력 표시가 날짜 칸에 보이면 됩니다. Demo는 `cal_date` 없이 띄우므로 1월부터 시작합니다. 사진을 넣고 저장하는 확인은 [테스트 주문과 렌더링](/docs/templates/test-render)의 **Test Order**로 합니다.
</Check>

<Note>
  쇼핑몰에서 고른 시작 연월이 `cal_date`로 제대로 넘어오는지는 연동 담당자에게 확인을 부탁하세요.
</Note>

## 다음 단계

<Columns cols={2}>
  <Card title="띄우기 옵션" icon="sliders" href="/docs/reference/launch-options">
    `cal_date`와 `options`를 넘기는 방법을 봅니다.
  </Card>

  <Card title="템플릿 페이지" icon="file" href="/docs/templates/pages">
    마스터 이름으로 페이지 종류를 정합니다.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.