Skip to content

Category API

Toss POS 플러그인에서 메뉴를 카테고리별로 관리하는 API입니다. 메뉴를 논리적으로 그룹화하여 보기 쉽게 구성할 수 있습니다.

Types

PluginCatalogCategory

메뉴 카테고리의 정보를 나타내는 객체입니다.

ts
{
    id: number;              // 카테고리의 고유 ID
    title: string;           // 카테고리명
    titleI18n?: PluginLanguagePack;  // 다국어 지원 카테고리명
}
필드타입필수설명예시
idnumber필수카테고리의 고유 ID1
titlestring필수카테고리명'커피'
titleI18nPluginLanguagePack선택다국어 지원을 위한 카테고리명

Methods

getCategory

메뉴의 카테고리를 조회합니다.

ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';

/**
 * 카테고리 목록 조회
 * @returns 카테고리 목록
 */
const category = await posPluginSdk.category.getCategory(categoryId);

getCategories

메뉴의 카테고리 목록을 조회합니다.

ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';

/**
 * 카테고리 목록 조회
 * @returns 카테고리 목록
 */
const categories = await posPluginSdk.category.getCategories();

on

update

카테고리가 업데이트 되었을 때 발생하는 이벤트입니다

ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';

posPluginSdk.category.on('delete', (catalog: PluginCatalogCategory) => {
    console.log('삭제 된 메뉴:', catalog.title);
});

delete

카테고리가 삭제되었을 때 발생하는 이벤트입니다

ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';

posPluginSdk.category.on('delete', (catalog: PluginCatalogCategory) => {
    console.log('삭제 된 메뉴:', catalog.title);
});

add

카테고리가 추가되었을 때 발생하는 이벤트입니다

ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';

posPluginSdk.category.on('delete', (catalog: PluginCatalogCategory) => {
    console.log('삭제 된 메뉴:', catalog.title);
});

사용 예시

카테고리 목록 조회 및 처리

ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';

class MenuManager {
    /**
     * 카테고리 목록 조회 및 처리
     */
    async loadCategories() {
        try {
            const categories = await posPluginSdk.category.getCategories();
            this.displayCategories(categories);
        } catch (error) {
            console.error('카테고리 조회 실패:', error);
        }
    }

    /**
     * 카테고리 정보 표시
     * @param categories 카테고리 목록
     */
    private displayCategories(categories: PluginCatalogCategory[]) {
        console.log('=== 카테고리 목록 ===');
        categories.forEach((category) => {
            console.log(`ID: ${category.id}`);
            console.log(`이름: ${category.title}`);
            
            if (category.titleI18n) {
                console.log('다국어 지원:');
                Object.entries(category.titleI18n).forEach(([lang, name]) => {
                    console.log(`  ${lang}: ${name}`);
                });
            }
            console.log('-------------------');
        });
    }
}

// 사용 예시
async function manageMenu() {
    const menuManager = new MenuManager();
    await menuManager.loadCategories();
}

다국어 지원 카테고리 처리

ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';

/**
 * 현재 언어에 맞는 카테고리명 조회
 * @param category 카테고리 정보
 * @param language 현재 언어 코드
 * @returns 카테고리명
 */
function getCategoryTitle(category: PluginCatalogCategory, language: string): string {
    if (category.titleI18n && category.titleI18n[language]) {
        return category.titleI18n[language];
    }
    return category.title;
}

// 사용 예시
async function displayLocalizedCategories() {
    const categories = await posPluginSdk.category.getCategories();
    const currentLanguage = 'en'; // 현재 언어 코드

    categories.forEach(category => {
        const title = getCategoryTitle(category, currentLanguage);
        console.log(`카테고리: ${title}`);
    });
}