Appearance
Category API
Toss POS 플러그인에서 메뉴를 카테고리별로 관리하는 API입니다. 메뉴를 논리적으로 그룹화하여 보기 쉽게 구성할 수 있습니다.
Types
PluginCatalogCategory
메뉴 카테고리의 정보를 나타내는 객체입니다.
ts
{
id: number; // 카테고리의 고유 ID
title: string; // 카테고리명
titleI18n?: PluginLanguagePack; // 다국어 지원 카테고리명
}| 필드 | 타입 | 필수 | 설명 | 예시 |
|---|---|---|---|---|
| id | number | 필수 | 카테고리의 고유 ID | 1 |
| title | string | 필수 | 카테고리명 | '커피' |
| titleI18n | PluginLanguagePack | 선택 | 다국어 지원을 위한 카테고리명 |
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}`);
});
}