시각적 컨텐츠 조각 - 템플릿 visual-content-fragments-templates
Adobe Experience Manager(AEM) as a Cloud Service에서 HTML 템플릿을 사용하여 콘텐츠 조각을 시각화하고 HTML 형식으로 전달할 수 있습니다.
HTML 템플릿을 사용하면 콘텐츠 조각이 표시되는 방식을 제어할 수 있습니다. 선택한 코드 편집기에서 HTML 템플릿을 만든 다음 업로드하고 AEM의 콘텐츠 조각 모델에 할당할 수 있습니다. Handlebars.js를 사용하는 콘텐츠 자리 표시자를 사용하면 콘텐츠 조각 모델의 데이터 유형에 템플릿을 매핑할 수 있습니다. 모델에 할당되면 모델을 기반으로 하는 모든 콘텐츠 조각에서 템플릿을 사용하여 조각을 시각화하거나 웹, 이메일, 모바일 애플리케이션 등과 같은 모든 채널에 HTML 형식의 모듈식 환경으로 전달할 수 있습니다.
이 문서에서는 시각적 컨텐츠 조각을 렌더링하기 위해 Handlebars 구문을 사용하여 사용자 지정 HTML 템플릿을 만드는 방법에 대해 설명합니다.
템플릿을 만든 후 다음을 수행할 수 있습니다.
학습 내용 what-you-will-learn
다음에 대한 (매우 빠른) 소개를 제공하면:
- AEM에서 템플릿을 사용하는 방법
- 게시 URL 사용
이 페이지에서는 다음 항목을 다룹니다(자세히 알아보기).
- Handlebars - 구문에 필요한 기본 사항
- 콘텐츠 조각 데이터에 액세스하는 방법
- 중첩된 콘텐츠 조각을 사용하여 작업
- 여러 값 필드 처리
- 루프 및 조건부 논리 만들기
- 콘텐츠 조각을 위한 템플릿 디자인 모범 사례
사전 요구 사항 prerequisites
여기에서 다루는 기술을 이해하고 사용하려면 다음을 수행해야 합니다.
- HTML에 대한 기본 이해
- AEM 콘텐츠 조각 및 콘텐츠 조각 모델에 대한 친숙도
- 콘텐츠 조각 모델 이해
컨텐츠 조각 HTML 템플릿 사용 using-a-content-fragment-html-template
AEM에서 컨텐츠 조각 HTML 템플릿 사용 using-a-content-fragment-html-template-in-aem
AEM에서 템플릿을 사용하는 방법에 대한 자세한 내용은 다음을 참조하십시오.
시각적 콘텐츠 조각 게시 URL 사용 using-the-visual-content-fragment-publish-url
템플릿을 사용하여 시각적 콘텐츠 조각을 만든 후에는 시각적 콘텐츠 조각의 게시 URL을 사용할 수 있습니다.
Handlebars - (매우) 기본 사항 handlebars-the-very-basics
Handlebars는 이중 중괄호(대괄호) {{ }}를 사용하여 동적 콘텐츠를 HTML에 삽입하는 간단한 템플릿 언어입니다.
기본 구문 basic-syntax
기본 Handlebars 구문의 예는 다음과 같습니다.
주요 개념 key-concepts
Handlebars의 주요 개념:
{{ }}{{{ }}}{{! }}{{{ }}})를 사용하십시오.템플릿 컨텍스트 참조 template-context-reference
템플릿이 렌더링되면 콘텐츠 조각에 대한 모든 데이터가 포함된 컨텍스트 개체를 수신합니다. 다음이 포함됩니다.
-
선택한 조각
-
선택한 조각에서 참조된 모든 추가 조각
note NOTE 조각을 참조할 수 있습니다. - UI에서: 최대 깊이 5까지
- api 사용 시: 최대 깊이 10까지 깊이를 구성할 수 있습니다.
기본 컨텐츠 조각 main-content-fragment
(선택한) 콘텐츠 조각에 대한 컨텍스트 오브젝트 구조:
fieldsallFields{name, value} 배열hasFieldstrue속성 구조(기본 및 참조된 조각) properties-structure-main-and-referenced-fragments
properties 개체의 구조는 선택한 조각과 참조된 각 조각에 대해 동일합니다.
idtitledescriptionpath/content/dam/...hasDescriptiontruecreatedDatemodifiedDatepublishedDatestatusDRAFTmodelid, path, name, technicalName, descriptionvalidationStatus{property, message}과(와) 같은 항목previewReplicationStatustagsid, title, titlePath, name, path, descriptionfieldTagstags과(와) 같은 구조입니다.예: 템플릿 액세스
(선택한) 콘텐츠 조각의 경우:
참조된 콘텐츠 조각 referenced-content-fragments
참조된 조각에 대한 컨텍스트 오브젝트 구조:
hasReferencedFragmentstruereferencedFragmentsreferencesErrortruereferencesErrorMessagereferencesError이(가) true일 때 오류 메시지참조된 조각 구조 referenced-fragment-structure
referencedFragments의 각 항목에는 다음이 포함됩니다.
anchorIdpropertieshasFieldsfieldsallFields{name, value} 배열예: 처음 참조된 콘텐츠 조각(0으로 인덱싱된 목록의 첫 번째 항목)에 대한 템플릿 액세스:
또는 필드 맵에서 다음을 수행합니다.
컨텐츠 조각 메타데이터 구조 content-fragment-metadata-structure
조각의 메타데이터(메타데이터 스키마가 지원하는 메타데이터/필드 블록)가 metadata 아래에 표시됩니다. 구조적 값(title, description, path, tags, dates, status)을 포함하는 properties과(와) 다릅니다.
metadatametadata 표현식은 오류 대신 비어 있습니다.metadata.schemaIddefaultmetadata.valuesmetadata.fieldsname, type(문자열, 정수, 숫자, 부울, 배열, 개체), value 및 title(스키마에서 사람이 읽을 수 있는 레이블)이 있습니다.metadata.values은(는) JSON 형식을 유지하므로 문자열로 미리 렌더링된 템플릿에 도달하는 스칼라 필드와 달리, 여기서 읽은 숫자 또는 부울은 비교 및 부울 도우미와 직접 작동합니다. 비교 및 부울 논리 도우미도 참조하세요.에셋 필드 구조 asset-field-structure
참조된 자산은 최상위 컬렉션이 아닙니다. referencedAssets이(가) 없습니다. 참조된 조각 내의 에셋에 대해 에셋을 포함하는 필드 fields.<assetField> 또는 fields.<ref>.fields.<assetField>을(를) 통해 에셋에 도달했습니다.
에셋 필드 값은 이중 특성입니다. 미리 렌더링된 에셋 HTML으로 인쇄되어 properties 아래에 에셋의 메타데이터를 표시합니다.
<img>)입니다.트리플 중괄호 필요:
{{{fields.heroImage}}}properties여러 값을 갖는 에셋 필드가 목록입니다. HTML의 경우 {{{this}}}, 메타데이터의 경우 {{this.properties.assetId}}을(를) 사용하여 {{#each fields.gallery}}(으)로 반복합니다.
로컬 DAM 에셋의 속성 properties-of-a-local-dam-asset
이러한 키는 콘텐츠 조각 응답에 의해 전달되며 항상 사용할 수 있습니다.
assetIdurn:aaid:aem:1fb05fe4-...path/content/dam/wknd/ian_provo.jpgnameian_provo.jpgtitledescriptiontypeassetassetfieldNameprofilePicturestatusNEW, DRAFT, PUBLISHED, MODIFIED, UNPUBLISHEDDRAFTpreviewReplicationStatusPUBLISHED, UNPUBLISHED, MODIFIED, NEVER_PUBLISHEDcreated, modified, publishedat(ISO-8601), by, fullName, firstName, lastNamedc:formatimage/jpegrepo:size251434tiff:ImageWidth1152tiff:ImageHeight1152yournamespace:persistentID과(와) 같은 사용자 지정 네임스페이스가 있는 속성을 포함하여 에셋이 전달하는 모든 다른 속성입니다. 요청 시 자산에서 가져옴콜론을 포함하는 속성 이름에는 대괄호 구문이 필요합니다.
Dynamic Media 에셋의 속성 properties-of-a-dynamic-media-asset
Dynamic Media(원격) 자산은 DAM 경로를 전달하지 않습니다. 인라인되는 키는 두 개뿐입니다.
repositorydelivery-p12345-e67890.adobeaemcloud.comassetIdurn:aaid:aem:1fb05fe4-...이러한 URL을 함께 사용하면 포함된 이미지를 사용하는 대신 Dynamic Media 게재 URL을 작성할 수 있습니다. 다른 모든 속성은 자산의 자체 게재 호스트에서 가져옵니다. 승인된(게시된) 에셋만 제공됩니다. 따라서 승인되지 않은 Dynamic Media 에셋은 이 두 키 외에는 아무 것도 해결하지 않습니다.
properties.<key>이(가) 아닌 this.properties.<key>을(를) 쓰십시오. 키가 콘텐츠 조각 속성이기도 한 기본 경로(예: title, description, path 또는 status)는 자산이 아닌 조각에 대해 확인됩니다.기본 필드 액세스 basic-field-access
필요한 경우 모든 필드를 반복할 수 있으므로 직접 필드 액세스가 권장됩니다.
직접 필드 액세스(권장) direct-field-access-recommended
필드 맵을 사용하여 이름으로 직접 필드에 액세스합니다.
기억하십시오.
- 사전 렌더링된 HTML(서식 있는 텍스트)가 포함된 경우 필드 값에 삼중 중괄호
{{{ }}}을(를) 사용합니다. - 필드 이름(제목, 자막, 설명, primaryImage) 은(는) 콘텐츠 조각 모델정확히과(와) 일치해야 합니다.
- 누락된 필드는 렌더링되지 않습니다. 오류가 발생하지 않으며 Handlebars 구문이 렌더링된 HTML 조각에 표시(및 표시)됩니다.
모든 필드 반복 iterate-through-all-fields
필드 이름을 미리 알 수 없는 경우 allFields을(를) 사용합니다.
기억하십시오.
{{name}}이(가) 이중 중괄호(일반 텍스트 레이블)를 사용합니다.{{{value}}}에서 트리플 중괄호(사전 렌더링된 HTML 값)를 사용합니다.
중첩된 콘텐츠 조각 nested-content-fragments
콘텐츠 조각 필드가 다른 콘텐츠 조각을 참조하는 경우 점 표기법을 사용하여 참조된 조각의 필드에 직접 액세스할 수 있습니다.
단일 수준 중첩 single-level-nesting
단일 수준 중첩의 예:
패턴: fields.referenceFieldName.nestedFieldName
다중 레벨 중첩 multi-level-nesting
시스템은 무제한 중첩 깊이를 지원합니다.
패턴: fields.level1.level2.level3.fieldName(제한된 깊이; 기본값은 5이며, API를 사용할 경우 10으로 확장할 수 있음)
API 매개 변수 요구 사항: 하이드레이션 api-parameter-requirements
중첩된 콘텐츠 조각 액세스를 활성화하려면 API 호출에 hydration 쿼리 매개 변수를 포함해야 합니다.
하이드레이션을 사용하려면:
# Enable hydration with depth=2 for 2 levels of nesting
GET /adobe/sites/cf/fragments/{id}/preview?hydration=%7B%22enabled%22%3Atrue%2C%22maxDepth%22%3A2%7D
maxDepth123+다중 값 필드 multi-valued-fields
여러 유형의 여러 값 필드가 있습니다.
다중 값 텍스트 필드 multi-valued-text-fields
다중 값을 지정하면 텍스트, number, 날짜 및 기타 단순 필드가 배열이 됩니다.
Handlebars에서 색인별로 배열 항목에 액세스할 때는 다음을 잊지 마십시오.
- 사용:
.[0](대괄호 앞에 점)
- 아님:
[0]
다중 값 숫자 필드 multi-valued-number-fields
숫자를 렌더링하기 위해 문자열(으)로 변환됨:
다중 값 콘텐츠 조각 참조 multi-valued-content-fragment-references
필드가 여러 콘텐츠 조각을 참조하는 경우:
여러 값 자산 참조 multi-valued-asset-references
에셋(예: 이미지 및 문서)인 콘텐츠 형식에 대해 구성된 콘텐츠 참조 필드가 HTML으로 미리 렌더링됩니다. 다중 값 자산이 배열이 됨:
중첩된 다중 값 참조 nested-multi-valued-references
다중 값 참조는 어떤 깊이에서든 다중 값 참조를 포함할 수 있습니다.
루프 및 반복 loops-and-iteration
Handlebars는 배열 및 개체를 반복하는 데 {{#each}} 도우미를 제공합니다.
배열 반복 iterating-over-arrays
배열에 대한 반복의 예:
루프의 특수 변수 special-variables-in-loops
{{#each}}개 블록 내에서 Handlebars는 특수 변수를 제공합니다.
참조된 조각 반복 iterating-over-referenced-fragments
참조된 조각을 반복하는 예:
중첩 루프 nested-loops
중첩 루프의 예:
조건부 렌더링 conditional-rendering
데이터 가용성을 기반으로 콘텐츠를 표시하거나 숨기려면 조건을 사용하십시오.
기본 If/Else basic-if-else
기본 if-else 구문의 예는 다음과 같습니다.
Unless(음수 조건부) unless-negative-conditional
unless 도우미:
hideAuthor이(가) 실제 부울(예: metadata.values.*부터)인 경우 올바르게 읽습니다. 그러나 단일 값 부울 필드인 은 문자열 "true" 또는 "false"(으)로 사전 렌더링되어 도착하고 "false"은(는) 비어 있지 않은(신뢰할 수 있는) 문자열이므로 {{#unless fields.hideAuthor}}은(는) 필드가 false인 경우에도 작성자를 숨깁니다. 대신 스칼라 필드를 명시적으로 비교하십시오(예: {{#if (eq fields.hideAuthor "true")}}). 비교 및 부울 논리 도우미도 참조하세요.중첩된 조건 nested-conditials
중첩된 조건의 예:
비교 및 부울 논리 도우미 comparison-and-boolean-logic-helpers
스톡 {{#if}} 및 {{#unless}} 도우미 외에도 서비스는 비교 및 부울 논리 도우미를 등록하므로 템플릿이 필드 값에 조건부로 렌더링될 수 있습니다. 비교 및 부울 논리 헬퍼는 모두 블록으로 작동하며 인라인 하위 표현식으로 작동합니다.
단일 값 필드에 대한 숫자 비교 numeric-comparison-on-single-valued-fields
단일 값 필드가 문자열(7이 아닌 fields.quantity is "7")로 미리 렌더링되어 도착하지만, 도우미가 비교 시 숫자 문자열을 강제 적용하므로 {{#gte fields.quantity 5}}과(와) {{#eq fields.quantity 0}}은(는) {{#gte metadata.values.quantity 5}}과(와) 함께 숫자로 비교됩니다. 여기서 값이 이미 입력되었습니다. 순서 지정(gt/gte/lt/lte)은 항상 숫자로 비교됩니다. 같음(Equality)은 인텐트로 변환됩니다. 문자열 필드는 다른 피연산자가 숫자 리터럴({{#eq fields.qty 0}}) 또는 형식화된 필드(예: metadata.values.*)인 경우에만 숫자로 비교됩니다. 두 문자열 필드 또는 따옴표 붙은 리터럴({{#eq fields.version "1.0"}})을 비교해도 정확한 문자열 일치가 유지되므로 텍스트로 모델링된 버전, 우편번호 및 ID는 축소되지 않습니다("007"이(가) "7"과(와) 같지 않음). 날짜가 ISO-8601 문자열로 연결되어 있으므로 eq/neq이(가) 정확한 문자열 일치별로 비교하며 정렬 도우미가 숫자가 아닌 날짜로 거부합니다. 누락되고 비어 있거나 숫자가 아닌 피연산자는 "조건 미충족"으로 처리되며 오류가 아닌 else 분기를 렌더링합니다.
부울 도우미는 평범한 진실(강제 작용 없음)을 사용합니다 boolean-helpers-use-plain-truthiness-no-coercion
부울 도우미 and/or/not은(는) 강제 적용되지 않습니다. 비어 있지 않은 모든 문자열이 truthy인 스톡 Handlebars truthy를 적용합니다(falsy 값은 false, null, undefined, 0, "", []임). 단일 값 부울 필드가 문자열 "true" 또는 "false"(으)로 도착하고 "false"은(는) 비어 있지 않은 문자열이므로 {{#not fields.flag}}은(는) truthy 값을 보고 필드가 false를 읽는 경우에도 다른 분기를 사용합니다. 스칼라 부울 필드를 and/or/not에 공급하지 않고 명시적으로 ({{#eq fields.flag "true"}})과(와) 비교하십시오. metadata.values.*에서 읽은 부울은 이미 형식화되어 부울 도우미와 직접 작동합니다.
도우미의 이름을 딴 필드 fields-named-after-a-helper
이러한 도우미를 등록하면 전체적으로 이름이 지정되지만, 인수 없이 읽을 때 이름이 지정된 필드가 여전히 자체 값을 렌더링합니다. {{#with fields}} 내의 {{eq}}은(는) 비교 결과가 아닌 eq 필드의 텍스트를 인쇄합니다. 도우미는 시각화 템플릿과 콘텐츠 조각 필드 값에 포함된 Handlebars 내에서 모두 사용할 수 있습니다.
기본 제공 Handlebars 도우미 built-in-handlebars-helpers
Handlebars에는 {{#if}} 및 {{#each}} 이상의 기본 제공 도우미가 포함되어 있습니다.
{{#if condition}}false, undefined, null, 0, "", []{{#unless condition}}#if의 역).{{#each array}}{{else}}을(를) 지원합니다.{{#with object}}{{lookup this "key"}}도우미 사용 with-helper
중첩된 오브젝트에 대한 새 범위를 만들어 반복적인 경로 접두사를 줄입니다.
고급 패턴 advanced-patterns
다음과 같은 고급 패턴의 몇 가지 예가 있습니다.
중첩 루프의 상위 컨텍스트 액세스 accessing-parent-context-in-nested-loops
../을(를) 사용하여 중첩 루프 내에서 상위 범위에 액세스합니다.
동적 CSS 클래스 dynamic-css-classes
동적 CSS 클래스의 예:
전체 예 complete-examples
몇 가지 완전한 예가 참고용으로 제공됩니다.
작성자가 있는 블로그 게시물
작성자 세부 정보가 포함된 블로그 게시물:
필수 API 호출:
GET /adobe/sites/cf/fragments/{id}/preview?hydration=%7B%22enabled%22%3Atrue%2C%22maxDepth%22%3A1%7D
일반 테이블 보기(필드에 대한 사전 지식 없음) generic-table-view-no-prior-knowledge-of-fields
필드에 대한 고유 지식이 없는 일반 테이블 보기입니다. 은(는) 일반 템플릿과(와) 유사합니다.
모범 사례 best-practices
모범 사례는 다음과 같습니다.
-
HTML 마크업 콘텐츠가 포함된 필드 값에는 항상 3중 중괄호를 사용하십시오.
-
필드 값은 사전 렌더링된 HTML입니다.
note NOTE 이중 중괄호는 원시 HTML 태그를 일반 텍스트로 표시합니다.
code language-handlebars <!-- CORRECT --> {{{fields.description}}} <!-- WRONG - displays HTML tags as text --> {{fields.description}} -
-
중첩된 필드에 액세스하기 전에 존재 여부를 확인합니다.
code language-handlebars <!-- GOOD: check before accessing nested fields --> {{#if fields.author}} <p>By {{{fields.author.name}}}</p> {{/if}} <!-- RISKY: may render empty if author is not set --> <p>By {{{fields.author.name}}}</p> -
가능하면 직접 필드 액세스를 사용하십시오.
allFields을(를) 반복하고 이름별로 일치시키는 것보다 더 읽기 쉽고 유지 관리할 수 있습니다.
-
섹션 주석을 사용하여 템플릿을 구성합니다.
code language-handlebars {{! ===== HEADER SECTION ===== }} <header> <h1>{{properties.title}}</h1> </header> {{! ===== MAIN CONTENT ===== }} <main> {{#if hasFields}} <!-- fields rendering --> {{/if}} </main> {{! ===== REFERENCES ===== }} {{#if hasReferencedFragments}} <!-- references rendering --> {{/if}} -
폴백을 사용하여 누락된 데이터를 우아하게 처리합니다.
code language-handlebars {{#if fields.title}} <h1>{{{fields.title}}}</h1> {{snippet-not-found:else}} <h1>Untitled</h1> {{/if}} -
항상 적절한 HTML 문서 구조를 사용하십시오.
code language-handlebars <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>{{properties.title}}</title> </head> <body> <!-- your content here --> </body> </html> -
다양한 콘텐츠 시나리오로 테스트합니다.
- 모든 필드가 완전히 채워짐
- 선택적 필드 누락
- 비어 있는 다중 값 필드
- 딥 중첩(여러 수준)
- 로드에 실패한 참조
-
의미 체계 HTML 요소 사용:
- 액세스 가능성 개선을 위해
<article>,<header>,<main>,<footer>,<time>,<address>또는 유사한 항목을 사용하십시오.
- 액세스 가능성 개선을 위해
-
CSS에서 스타일을 유지합니다.
<style>개 태그 또는 외부 스타일시트를 사용하십시오.- 가능하면 인라인 스타일을 사용하지 마십시오.
-
문서 복합 논리:
- Handlebars 주석
({{! }})을(를) 사용합니다. - 렌더링된 출력에 표시되는 HTML 주석을 사용하지 마십시오.
- Handlebars 주석
문제 해결 troubleshooting
일부 문제 해결 힌트에는 다음이 포함됩니다.
<p>Hello World</p>{{{fields.description}}}{{{fields.author.name}}}이(가) 비어 있음maxDepth이(가) 충분히 깊은지 확인하십시오.{{#each fields.tags}}을(를) 사용하여 모든 항목 반복{{{fields.tags[0]}}} 렌더링이 비어 있음{{{fields.tags.[0]}}}hasReferencedFragments은(는) 항상 false입니다.?hydration=%7B%22enabled%22%3Atrue%7D; 또한 {{#if referencesError}} 확인{{#if}} 또는 {{#each}} 블록을 확인합니다. 진단 출력 추가: <pre>hasFields: {{hasFields}} | title: {{properties.title}}</pre><!-- comment --> 대신 Handlebars 주석 {{! comment }} 사용{{#if fields.enabled}}은(는) 항상 신뢰할 수 있음"false" 문자열은 Handlebars에서 truthy입니다. 실제 false, null, undefined, 0, "" 및 []만 거짓 같습니다.<, & 대신 <, &이(가) 표시됨{{{fields.content}}}#each의 변수가 정의되지 않았습니다.{{{../name}}}에 대해 ../ 사용; 최상위 범위에 대해 ../../ 사용{{#each}} 내의 {{else}} 사용: {{#each fields.tags}}...{{else}}<p>No tags</p>{{/each}}자산 작업 working-with-assets
컨텐츠 조각에서 참조된 Assets은 AEM에 의해 HTML으로 사전 렌더링됩니다. 따라서 모든 에셋 참조에는 삼중 중괄호가 필수입니다.
<img src="..." alt="..."><video> 요소<a href="..."> 링크기억하십시오.
- 자산 필드에는 항상 3중 중괄호를 사용하십시오.
이중 중괄호를 사용하면 이미지, 비디오 또는 링크를 렌더링하는 대신 생성된 HTML 태그가 이스케이프되고 원시 텍스트로 표시됩니다.
에셋 필드 사용 asset-field-usage
에셋 필드 사용의 예:
사용자 지정 템플릿 도우미 customer-template-helpers
시스템에서는 사용자 지정 HTML 속성을 사용하여 HTML 요소를 생성하는 사용자 지정 Handlebars 도우미를 제공합니다. 이러한 도우미를 통해 사전 렌더링된 콘텐츠에서 소스 URL을 추출하는 복잡한 작업을 처리하면서 생성된 마크업을 제어할 수 있습니다.
사용 가능한 도우미:
asset- 사용자 지정 특성을 사용하여<img>태그를 생성합니다.text- 텍스트 콘텐츠를 사용자 지정 특성으로 래핑하는<span>개의 태그를 생성합니다.
asset 도우미 asset-helper
구문:
기억하십시오.
- 이중 중괄호가 아닌 자산 도우미와 함께 삼중 중괄호
{{{ }}}을(를) 사용하십시오.
네 가지 기본 예 four-basic-examples
네 가지 기본 예는 다음과 같습니다.
지원되는 속성 supported-attributes
유효한 HTML 속성을 추가할 수 있습니다.
classclass="my-class another-class"idid="unique-id"altalt="Custom alt text" (overrides existing alt)data-*data-index="1" data-type="hero"aria-*aria-label="Description" aria-hidden="true"widthwidth="300"heightheight="200"loadingloading="lazy"stylestyle="border-radius: 8px;"대체 텍스트 재정의 override-alt-text
원본 이미지의 alt 특성을 재정의할 수 있습니다.
복잡한 예 complex-example
복잡한 예는 다음과 같습니다.
루프와 함께 사용 using-with-loops
루프의 자산 도우미:
text 도우미 text-helper
텍스트 도우미는 텍스트 콘텐츠를 사용자 지정 CSS 클래스 및 HTML 특성으로 래핑하는 <span> 태그를 생성합니다. 개별 텍스트 필드의 스타일을 지정하는 데 유용합니다.
구문:
기억하십시오.
- 중괄호가 아닌 텍스트 도우미와 함께 중괄호
{{{ }}}을(를) 사용하십시오.
세 가지 기본 예 three-basic-examples
세 가지 기본 예는 다음과 같습니다.
일반적인 사용 사례 common-use-cases
일반적인 사용 사례는 다음과 같습니다.
루프 사용 with-loops
루프를 사용하는 일반적인 사용 사례는 다음과 같습니다.
도우미 - 속성 유효성 검사 helpers-attribute-validation
두 도우미 모두 속성 이름을 출력에 포함하기 전에 유효성을 검사합니다.
유효한 속성 이름:
-
문자로 시작해야 합니다(a-z, A-Z).
-
문자, 숫자, 하이픈 및 밑줄만 포함할 수 있습니다. 명명 규칙을 참조하세요.
-
대/소문자 구분 안 함
-
예:
- 유효:
class,id,data-value,aria-label,my_attr,dataIndex1
- 잘못됨:
123-attr,-class,@special,$money
- 유효:
잘못된 속성 이름은 로그에 경고와 함께 자동으로 건너뜁니다.
기억하십시오.
- 서버 로그에서 “잘못된 특성 이름 형식 차단” 경고를 확인하십시오.
직접 출력을 도우미와 비교 comparing-direct-output-to-helpers
직접 출력 {{{fields.xxx}}}을(를) 사용해야 하는 경우:
- 사용자 지정 스타일은 필요하지 않습니다.
- 기본 출력을 그대로 원하는 경우
- 필드에는 수정하지 않을 복잡한 HTML이 포함되어 있습니다
도우미 사용 시기:
- 스타일링을 위해 CSS 클래스를 추가해야 합니다.
- 사용자 지정 HTML 특성(
data-*,aria-*등)을 추가해야 합니다. - 일관되고 제어된 HTML 구조를 원합니다.
비교:
빠른 참조 quick-reference
몇 가지 빠른 참조 정보가 참조용으로 제공됩니다.
컨텍스트 변수 context-variables
컨텍스트 변수:
필드 액세스 field-access
필드에 액세스하는 방법:
제어 흐름 control-flow
제어 흐름은 다음과 같습니다.
루프 변수 loop-variables
루프 변수:
사용자 지정 템플릿 도우미 custom-template-helpers
사용자 지정 템플릿 도우미:
추가 리소스 additional-resources
추가 리소스를 사용할 수 있습니다.