> ## 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.

# 포토카드

> 여러 페이지를 그룹 단위로 편집하고 그룹마다 수량을 받아, 렌더링할 때 큰 대지에 모아 찍는 상품 설정

포토카드는 카드 한 장은 작지만 여러 장을 한꺼번에 주문받는 상품입니다. 편집기에서는 **페이지 그룹**으로 카드 한 장(앞면과 뒷면)을 묶고 그룹마다 인쇄 수량을 받습니다. 인쇄 파일은 렌더 단계에서 큰 대지에 격자로 모읍니다.

## 배우는 것

* 그룹을 켜는 상품 설정과 edicus options의 `group` 키
* 그룹 수량 UI와 총 수량 표시가 실제로 어떻게 움직이는지
* `option_string`과 띄우기 옵션으로 그룹 값을 바꾸는 방법

## 용어

| 용어 | 뜻 | 포토카드에서 |
| - | - | - |
| **페이지** | 편집하는 한 면 | 카드의 한 면 |
| **그룹** | `unit_page`개 페이지 묶음 | 카드 한 장(앞뒷면) |
| **수량** | 그룹마다 인쇄할 장수(`printCount`) | 같은 카드를 몇 장 찍을지 |
| **대지** | 인쇄할 때 여러 페이지를 모아 놓는 용지 | 인쇄용 큰 종이 |

## 상품 설정

<Steps>
  <Step title="여러 장 상품으로 만듭니다">
    상품 설정 **페이지** 그룹의 **페이지 구성** 줄에서 `multi-page`를 켭니다. **여러 장 설정** 줄이 열립니다.
  </Step>

  <Step title="그룹을 켭니다">
    **여러 장 설정**에서 `grouping`을 켜고 `group-type`을 `default`로 둡니다. `grouping`을 켜면 사이즈의 `paging-rule` 칸이 사라집니다.
  </Step>

  <Step title="사이즈의 edicus options에 group을 적습니다">
    사이즈를 고르고 **edicus options**에 아래 JSON을 넣은 뒤 **Update**로 저장합니다.

    ```json theme={null}
    {
      "group": {
        "unit_page": 2,
        "max_order": 21,
        "min_order": 21,
        "max_page": 42,
        "hide_page_count_ui": false,
        "hide_total_count_ui": false
      }
    }
    ```
  </Step>
</Steps>

| 화면 이름 | 저장 키 | 기본값 | 설명 |
| - | - | - | - |
| `grouping` | `template_option.pageGrouping` | 꺼짐 | 페이지 그룹을 씁니다. 사이즈의 product override에서 사이즈별로 바꿀 수 있습니다 |
| `group-type` | `template_option.pageGroupType` | `default` | 그룹 방식입니다. 아래 표를 보세요 |
| `group-tmpl` | `template_option.groupTemplate` | 꺼짐 | `group-type`이 `default`일 때만 보입니다. 켜면 템플릿 탭에서 고른 템플릿을 확인 창 없이 지금 그룹에만 적용합니다 |

| `group-type` 화면 값 | 저장 값 | 편집기 동작 |
| - | - | - |
| `default` | `default` | 그룹 추가, 삭제, 그룹별 수량을 씁니다 |
| `composite` | `composition` | 그룹 추가와 삭제, 수량 입력, 총 수량을 숨기고 그룹 자리에 수량만 보여 줍니다. 대지 값은 edicus options의 `composition`에서 옵니다 |
| `package` | `package` | 그룹 추가 버튼 대신 페이지마다 크기 버튼을 보여 줍니다. 누르면 `request-page-size-change` 이벤트를 부모 페이지로 보냅니다 |

## group 키

| 키 | 기본값 | 설명 |
| - | - | - |
| `unit_page` | `1` | 그룹 하나를 이루는 페이지 수입니다. 앞뒷면 카드는 `2`입니다 |
| `max_order` | 없음 | 모든 그룹 수량을 더한 총 수량의 상한입니다. 그룹 개수가 아닙니다. `0`이면 상한이 없고 총 수량만 표시합니다 |
| `min_order` | 없음 | 총 수량의 하한입니다. 저장하고 나갈 때 검사합니다 |
| `max_page` | `0` | 전체 페이지 수의 상한입니다. 닿으면 그룹을 더 추가할 수 없습니다. `0`이면 상한이 없습니다 |
| `max_group` | `0` | 그룹 수 상한입니다. `0`보다 크면 페이지 상한이 `max_group × unit_page`가 되고 `max_page`는 무시합니다 |
| `hide_page_count_ui` | `false` | `true`면 그룹마다 있는 수량 조절을 숨기고 그룹 번호(1부터)를 보여 줍니다 |
| `hide_total_count_ui` | `false` | `true`면 그룹 추가 버튼 옆의 총 수량 표시를 숨깁니다 |

`max_order`를 아예 적지 않으면 총 수량 상한은 띄우기 옵션 `max_page`, 그다음 `max_page` 키 순서로 정해집니다. 이때 `max_page`, `max_group`은 그룹 추가를 막지 않습니다. 상한을 분명히 하려면 `max_order`를 적습니다.

템플릿이 한 페이지뿐인데 `unit_page`를 `2`로 쓰려면 edicus options의 `params.num_page`로 처음 만들 페이지 수를 맞춥니다. 편집기가 템플릿 페이지를 그 수만큼 늘린 뒤 그룹을 나눕니다. 띄우기 옵션 `num_page`가 있으면 그 값이 이깁니다.

```json theme={null}
{ "params": { "num_page": 2 }, "group": { "unit_page": 2, "max_order": 21 } }
```

`hide_page_count_ui`를 켜면 사용자가 그룹 수량을 바꿀 수 없어 모든 그룹 수량이 `1`로 남습니다. 저장 결과의 그룹별 수량도 `1`이라 인쇄 파일에도 그룹마다 한 장씩만 들어갑니다. 세트 장수를 숫자로 적는 키(`unit_page`, `max_order`, `min_order`)는 오타가 나도 저장 때 검사하지 않으니 편집기로 띄워 확인합니다.

위 예는 앞뒷면 카드를 총 21장 주문받습니다. 서로 다른 카드 21종을 만들 수 있게 `max_page=42`를 둡니다. 같은 카드 한 종을 21장 찍을 수도 있으므로 `unit_page × max_order = max_page`는 필수 공식이 아닙니다.

## 편집기의 그룹 UI

데스크톱은 화면 아래 스토리보드에, 기존 모바일 UI와 신규 모바일 UI는 페이지 화면에 그룹이 나란히 보입니다. 동작은 셋이 같습니다.

| 요소 | 동작 |
| - | - |
| 수량 조절(− 입력 +) | 그룹의 인쇄 수량을 바꿉니다. 1보다 작아지지 않습니다. 총 수량이 `max_order`에 닿으면 +가 흐려집니다. 입력으로 넘기면 상한에 맞게 줄입니다. 기존 모바일 UI(`mobile: true`)는 입력 칸 없이 −, +만 있습니다 |
| 그룹 삭제 | 그룹이 하나뿐이면 흐려집니다. 기존 모바일 UI는 그룹 메뉴에서 지웁니다 |
| 그룹 추가(+) | 지금 그룹 뒤에 그룹을 더합니다. 총 수량이 `max_order`에 닿았거나 페이지 수가 상한에 닿으면 흐려집니다 |
| 총 수량 | `합계 / max_order` 꼴로 보입니다. `max_order`가 `0`이면 합계만 보입니다 |

처음 만들 때 그룹 수는 템플릿 페이지 수(띄우기 옵션 `num_page`가 있으면 그 값)를 `unit_page`로 나눈 몫이며 최소 1입니다. 모든 그룹 수량은 1로 시작합니다.

저장하고 나갈 때 총 수량이 `min_order`보다 적으면 "최소 N장 이상의 주문만 가능합니다."를 띄우고 멈춥니다. 상품의 `confirm-exit`이 켜져 있으면 대신 그래도 종료할지 묻고, 종료를 고르면 그대로 진행합니다. 그러니 파트너 주문 서버에서도 총 수량을 검증하세요.

그룹 수량을 바꿀 때마다 [`page-group-print-count-changed`](/docs/sdk/events) 이벤트로 `groupIndex`와 `printCount`가 옵니다. 저장 결과 `save-doc-report`의 `docInfo.pageGroup.groups`에도 그룹별 수량이 담깁니다.

<Warning>
  `multi-page`를 꺼도 `grouping`이 켜져 있으면 신규 모바일 UI(`mobile: 'm2'`)의 전체 페이지 창은 그룹 화면을 열고, 거기서 그룹을 추가할 수 있습니다. 묶음 상품이 아니면 `grouping`도 함께 끕니다.
</Warning>

## option\_string과 띄우기 옵션

띄우기 옵션 [`options.group`](/docs/reference/launch-options#options-키)은 edicus options의 `group`과 키 단위로 합쳐지며 겹치는 키는 띄우기 옵션이 이깁니다. `option_string`의 `group_*` 키는 그 위에 덮어씁니다.

| `option_string` 키 | 동작 |
| - | - |
| `group_count` | `grouping`과 `multi-page`를 켜고 `max_order`로 씁니다. edicus options에 `group`이 없으면 기본값으로 만듭니다 |
| `group_unit` | `unit_page`로 씁니다 |
| `group_hide_count` | `true`면 `hide_page_count_ui`를 켭니다 |
| `group_hide_total_count` | 값이 있으면 `false`를 적어도 `hide_total_count_ui`를 켭니다 |
| `group_fill_page` | `true`면 `unit_page × max_order`장, `false`면 `unit_page`장으로 처음 페이지 수를 맞춥니다 |

`group_*` 키는 edicus options에 `group`이 있거나 `group_count`를 함께 줄 때만 반영됩니다.

## 템플릿

* 칼선을 위한 `Cut` 레이어 말고는 특별한 레이어가 필요 없습니다. 카드 크기로 빈 페이지를 만들어 올립니다.
* 페이지 수는 `unit_page`의 배수로 만듭니다. 그룹은 앞에서부터 `unit_page`장씩 끊습니다.

| 만들 페이지 수 | 편집기를 열면 | 어울리는 판매 방식 |
| - | - | - |
| `unit_page`만큼 | 그룹 하나로 시작합니다. 수량을 늘리거나 그룹을 더합니다 | 같은 카드를 여러 장 주문할 때 |
| `unit_page × max_order`만큼 | 그룹이 미리 다 만들어져 있습니다 | 모든 카드를 다르게 만들 때 |

## 렌더와 썸네일

인쇄 파일은 렌더 옵션의 [`grid-page`](/docs/products/render-options#grid-page)가 큰 대지에 카드를 격자로 배열합니다. 편집기의 페이지 크기는 바뀌지 않습니다. 앞뒷면이 있는 카드는 `grid-page`의 `double-side`를 켜서 앞면과 뒷면을 각각의 대지 같은 칸에 놓고, 양면 인쇄에서 앞뒤 위치가 맞도록 `mirror`를 `odd-h`로 두어 뒷면 대지의 열 순서를 좌우로 뒤집습니다.

장바구니 썸네일은 사이즈의 product override **Tn**을 `grid-fit`으로 두면 여러 페이지를 한 장에 모읍니다. [썸네일](/docs/products/thumbnail-preview#여러-페이지를-한-장으로)을 보세요. 편집기 미리보기를 격자로 보려면 사이즈의 `preview`를 `multi-grid`로 둡니다. 그룹 수량만큼 반복해 보여 줍니다.

## 됐는지 확인

<Check>
  Manager의 **Resource**에서 포토카드 템플릿을 골라 **Demo**로 띄우면 그룹 수량 UI와 총 수량 표시가 설정대로인지, 총 수량이 `max_order`에 닿을 때 +가 흐려지는지 볼 수 있습니다. 저장이 필요한 `min_order` 안내와 저장 결과의 그룹별 수량은 **Test Order**로 확인합니다.
</Check>

## 다음 단계

<Columns cols={2}>
  <Card title="사이즈 고급 옵션" icon="sliders" href="/docs/products/size-options">
    edicus options의 다른 키와 미리보기를 봅니다.
  </Card>

  <Card title="렌더 옵션" icon="print" href="/docs/products/render-options">
    대지 배열을 설정합니다.
  </Card>
</Columns>


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