Skip to main content
Liquid은 이메일, 푸시, SMS, 인앱 및 Live Activities를 포함한 채널 전반에서 메시지를 개인화하기 위해 OneSignal에서 지원하는 템플릿 언어입니다. 태그, 필터 및 조건을 사용하여 메시지 콘텐츠를 동적으로 사용자 지정합니다. Liquid 구문에 대한 자세한 내용은 공식 Liquid 문서를 참조하세요.

기본 구문

Liquid은 두 가지 주요 구문 구조를 사용합니다:
  1. 출력 태그: {{ ... }} — 변수 또는 객체의 데이터를 표시합니다.
  2. 로직 태그: {% ... %} — 조건문 또는 루프를 실행합니다.

조건문

연산자

  • ==, !=, >, <, >=, <=
  • and, or
  • contains (문자열 또는 배열)
liquid

if, elsif, else

liquid

unless

liquid

필터

{{ variable | filter }}를 사용하여 필터를 적용하여 데이터 표시 방식을 조정합니다.

default

속성이 비어 있거나 존재하지 않는 경우 기본값을 할당합니다.
liquid

date

date 필터는 타임스탬프를 다른 날짜 형식으로 변환합니다. 이 구문의 형식은 strftime과 동일합니다. 입력은 Ruby의 Time.parse와 동일한 형식을 사용합니다. 태그로 날짜를 초 단위 unix 타임스탬프로 설정합니다. 이렇게 하면 liquid 구문 개인화 및 시간 연산자를 사용한 세분화를 모두 사용할 수 있습니다. 예를 들어 태그는 다음과 같을 수 있습니다: bill_due : 1687968776
liquid
Result
liquid
Result
날짜 형식은 올바른 형식의 날짜가 포함된 경우 문자열에서 작동합니다.
liquid
Result
현재 시간을 가져오려면 date 필터와 함께 특수 단어 now (또는 today)를 전달합니다.
liquid
Result
현재 시간은 메시지가 수신자에게 전송된 시간을 기준으로 메시지에 렌더링됩니다. 메시지를 테스트하는 경우 테스트 메시지가 전송된 시간이 현재 시간으로 표시됩니다.

capitalize

이 필터는 문자열의 첫 문자를 대문자로 만들고 나머지 문자를 소문자로 변환합니다.
liquid
Result

round

이 필터는 숫자를 가장 가까운 정수로 반올림하거나 인수로 숫자가 전달된 경우 해당 소수 자릿수로 반올림합니다.
liquid
Result

pluralize

이 필터는 주어진 숫자를 기준으로 문자열의 단수 또는 복수 형식을 반환합니다. 숫자는 정수여야 하며 문자열로 제공할 수 있습니다. 문자열의 단수 및 복수 형식을 모두 제공해야 합니다.
liquid
Result

반복

for 루프

코드 블록을 반복적으로 실행합니다. for 루프 내에서 사용 가능한 속성의 전체 목록은 Liquid for 루프 문서를 참조하세요.
liquid
Request Body
Result
강력하고 유연하지만 liquid 구문에서 for 루프를 사용하면 특정 드문 경우에 알림 전달 성능이 저하될 수 있습니다. for 루프 사용에 주의하세요. 또한 일부 푸시 채널 필드(contents, headings, subtitle, apns_alerturl)에서 for 루프 사용을 방지한다는 점에 유의하세요.

limit & offset

루프를 지정된 반복 횟수로 제한합니다. 예를 들어 메시지에 4개의 제품만 표시하려는 경우 제한 및 오프셋을 사용하여 표시되는 제품 수를 지정할 수 있습니다.
Data
liquid
Result
지정된 인덱스에서 루프를 시작하려면 오프셋 값을 추가합니다:
Data
liquid
Result

where

주어진 속성 값을 가진 객체만 포함하는 배열을 생성하거나 기본적으로 참 값을 가진 객체만 포함합니다. 이 예시에서는 제품 목록이 있고 주방 제품을 별도로 표시하려고 한다고 가정합니다. where를 사용하면 typekitchen인 제품만 포함하는 배열을 만들 수 있습니다.
Data
liquid
Result

문자열 조작

문자열 필터를 적용하여 메시지에서 태그 값이나 인라인 문자열이 표시되는 방식을 조정합니다.

자주 묻는 질문

대체가 작동하지 않는 이유는 무엇인가요?

  • 인앱 메시지는 속성 대체를 지원하지 않습니다.
  • “테스트 메시지 보내기”를 사용할 때는 태그 대체가 작동하지 않습니다.
  • 태그 키는 영숫자여야 하거나 _ 및 -를 사용해야 합니다(마침표나 공백 없음).
  • 미리보기 모드에서는 대체가 표시되지 않습니다. 테스트하려면 실제 메시지를 보내세요.

defaultif/else 중 어떤 것을 사용해야 하나요?

변수 값만 폴백이 필요하고 주변 텍스트가 동일하게 유지될 때는 default 필터를 사용하세요.
liquid
Result (name = "Jon")
Result (name이 비어 있는 경우)
주변 텍스트, 구두점 또는 문장 구조도 변수 존재 여부에 따라 변경되어야 할 때는 if/else 조건 논리를 사용하세요.
liquid
Result (name = "Jon")
Result (name이 비어 있는 경우)
문장 구조가 변경될 때는 default를 사용하지 마세요. 예를 들어, {{ name | default: "Shop your favorites" }}, shop your favorites는 name이 비어 있을 때 “Shop your favorites, shop your favorites”로 렌더링됩니다. 폴백이 변수 이상으로 변경된다면 if/else를 사용하세요.

공백 및 개행을 제어하는 방법은 무엇인가요?

하이픈을 사용하세요: {{- ... -}}, {%- ... -%}는 주변 공백을 제거합니다. 자세한 내용은 공백 제어를 참조하세요.

사용자 생성 콘텐츠를 처리하는 방법은 무엇인가요?

사용자 생성 텍스트를 {% raw %}{% endraw %}로 래핑하여 Liquid 구문 분석을 방지하세요. “raw” 구문을 참조하세요.

관련 페이지

메시지 개인화

Liquid, Data Feeds 및 커스텀 이벤트를 포함한 모든 개인화 옵션 개요.

Data Feeds

전송 시 API에서 메시지로 실시간 데이터를 가져옵니다.

태그

세분화 및 Liquid 개인화를 위해 사용자에 키-값 쌍을 저장합니다.

템플릿

Liquid 개인화가 내장된 재사용 가능한 메시지 템플릿을 만듭니다.