콘텐츠 목록 질의에서 페이지를 실행할 때 계산되는 속성 값을 정의하여 최근에 업데이트된 콘텐츠를 표시할 수 있습니다.
사이트 내 구성요소의 속성은 대부분 정적입니다. 사용자는 구성요소의 속성 중 하나에 대해 고정 문자열 또는 값을 선택하거나 입력하며, 페이지가 실행되는 시기나 위치에 관계없이 변경되지 않습니다. 그러나 페이지를 실행할 때 계산되는 속성 값을 정의할 수 있습니다. 이는 콘텐츠 질의에서 최근에 업데이트된 콘텐츠를 표시하는 데 유용합니다. 사용자는 "최근 3일 이내"와 같은 날짜를 입력할 수 있습니다.
Mustache JS 확장을 여러 속성에 삽입할 수 있습니다. 이 문자열에서 참조된 값은 페이지를 실행할 때 실행되는 모델에서 파생됩니다. 미리 정의된 모델은 Content REST API 호출용으로 형식 지정된 날짜를 처리합니다. 이 모델을 추가 값으로 확장하여 사용자 요구사항을 충족시킬 수 있습니다.
속성에 입력할 수 있는 문자열의 예는 다음과 같습니다.
Content List component: Additional Query String property: updatedDate gt "{{#content.date}}today - 3 days{{/content.date}}"
이 Mustache 날짜 입력은 런타임에 평가되므로 실행 시간에 따라 반환 값이 변경됩니다(즉, updatedDate gt "2220181002060000000"
으로 확장됨). 이와 같이 사용자는 미리 정의된 값을 입력할 필요 없이 복잡한 날짜 문자열을 구성할 수 있습니다.
지원되는 구성요소 속성
다음 속성은 Mustache JS 템플리트 구문을 지원합니다.
콘텐츠 목록
추가 질의 문자열
예: updatedDate gt "{{#content.date}}today - 3 days{{/content.date}}"
제목/단락/텍스트
CKEditor를 통해 입력한 서식 있는 텍스트
예: "Content REST API format for date: {{#content.date}}now{{/content.date}}"
주:
Mustache 템플리트에 대한 사용자정의 모델이 없으면 제목/단락/텍스트 확장은 별로 쓸모가 없습니다. 그러나 추가 질의 문자열에 입력한 내용은 편집-보기 간을 전환할 때 평가되어 즉시 표시되므로 검증에 매우 유용합니다.지원되는 구성요소 구문
content.date
객체가 기본적으로 지원됩니다. 두 가지 주요 매개변수로 today
및 now
를 취합니다.
today
값은 현재 브라우저 시간을 가져와서 오늘밤 자정으로 변환한 후 해당 값을 UTC 시간으로 변환합니다.
{{#content.date}}today{{/content.date}}
는 오늘밤 자정에 브라우저 값이 UTC 값으로 변환되어 Content REST API 날짜 형식이 지정된 형태로 확장됩니다. 예를 들어, 다음과 같습니다.
2220181008065959999
다음과 같이 보강할 수 있습니다.
today +/- [day | week | month | year]
today
값은 더하기 또는 빼기 시 다르게 작동합니다. 빼기 시에는 오전 시간을 사용합니다. 더하기 시에는 자정 시간을 사용합니다. 예를 들어, 다음과 같습니다.
{{#content.date}}today - 1 day{{/content.date}}
는 하루 시작에 어제로 확장됩니다.
{{#content.date}}today + 2 days{{/content.date}}
는 자정에 내일 모레로 확장됩니다.
now
값은 현재 브라우저 시간을 가져와서 아무 조정 없이 UTC 시간으로 변환합니다.
{{#content.date}}now{{/content.date}}
는 현재 브라우저 시간이 UTC 값으로 변환되어 Content REST API 날짜 형식이 지정된 형태로 확장됩니다.
now
는 hour
로 보강할 수도 있습니다. 그러면 다음과 같습니다.
now +/- [hour | day | week | month | year]
{{#content.date}}now + 2 hours{{/content.date}}
- 지금부터 2시간 후가 UTC 시간으로 변환되어 Content REST API 날짜 형식이 지정된 형태
{{#content.date}}now - 1 day{{/content.date}}
- 이 브라우저 시간의 어제가 UTC 시간으로 변환되어 Content REST API 날짜 형식이 지정된 형태
지원되는 구성요소 구문 사용
추가 질의 문자열에서 매크로 확장을 사용하려면 최근 3주간 모든 항목을 반환한다고 가정할 때 다음을 입력하십시오.
updatedDate gt "{{#code.date}}today - 3 weeks{{/code.date}}"
날짜만 반환되므로 Content REST API 호출에 작동하려면 정적 값을 입력할 때와 마찬가지로 질의 문자열을 작성할 때 따옴표가 추가됩니다.
MustacheJS
구문은 mustache.github.io/mustache.5.html에서 Mustache JS 템플리트 페이지를 참조하십시오.
문자열을 확장할 때 실행되는 Mustache 인스턴스에 한 가지 변경사항이 있었습니다. Mustache는 {{ }}
를 사용하는 text
확장과 {{{ }}}
를 사용하는 html
확장을 모두 제공합니다. 둘 사이의 차이점은 텍스트 확장은 문자열에 HTML 인코딩을 한다는 것입니다. 즉, 값이 a < b
로 확장되면 결과는 a < b
가 됩니다. 이것은 URL에 문자열을 작성하려는 것이 아닙니다. 사용자에게 HTML 확장을 사용하도록 지시할 수 있지만, 이는 오버헤드일 뿐이며 {{{ }}}
를 사용해야 하는 이유를 설명하는 등의 더 많은 문제가 발생합니다.
이 문제를 피하기 위해 Mustache는 {{ }}
를 사용할 때 값을 이스케이프하지 않도록 설정되었습니다. 즉, {{ }}
및 {{{ }}}
가 똑같이 작동합니다. 또한 필요한 경우 사용자 연습용으로 결과 인코딩을 남겨 둡니다.
OOTB Mustache 모델
Mustache는 확장을 위해 템플리트에 모델을 적용해야 합니다. 앞의 예제에서 {{#content.date}}
는 이미 기본적으로 정의되어 있지만, 개발자가 {{person}}
과 같은 새 속성을 추가할 수 있습니다. 사용자가 모델에 없는 Mustache 템플리트에 값을 입력하면 결과는 빈 문자열이 됩니다. 따라서 Hello {{person}}
의 경우 개발자가 모델에 person
을 추가하지 않는 한 단지 Hello
로 확장됩니다.
사용된 모델 객체는 SCSMacros
라는 전역 객체입니다. 개발자는 자유롭게 이 객체에 추가 항목을 추가할 수 있습니다. 템플리트를 평가할 때 객체가 Mustache로 전달됩니다.
미리 정의된 모델 객체는 현재 content.date
객체만 지원합니다.
{ content: { date: <lambda implementation> } }
사용자정의 Mustache 모델
개발자의 요구사항에 따라 지원되는 객체를 개선할 수 있습니다. 따라서 lastTwoDays
객체를 도입하여 {{lastTwoDays}}
까지만 확장을 간소화할 수 있습니다.
앞의 예제에서 Hello {{person}}
과 같은 것을 지원하도록 모델을 확장하려면 SCSMacros에 person
객체를 추가해야 합니다. 페이지를 실행하기 전에 이 작업을 수행해야 합니다. 시작 부분에 스크립트 태그를 추가하여 페이지 레이아웃 내에서 수행할 수 있습니다. 예를 들어, 다음과 같습니다.
<script type="text/javascript"> window.SCSMacros = window.SCSMacros || {}; // define/get the SCSMacros object window.SCSMacros.person = "World"; </script>
이와 같이 변경하면 Hello {{person}}
템플리트가 Hello World
로 확장됩니다.
Hello {{#person}}personId{{/person}}
과 같이 객체에 값을 전달하려면 mustache lambda
를 구현하고 구현 내에서 값을 래핑하고 확장해야 합니다.
예를 들어, 다음과 같습니다.
<script type="text/javascript"> window.SCSMacros = window.SCSMacros || {}; // define/get the SCSMacros object //implement "person" as a lambda window.SCSMacros.person = function () { var people = { '111': { firstName: 'Small', lastName: 'World'}, '222': { firstName: 'Big', lastName: 'Universe'} }; return function (text, render) { var expandedText = render(text); var chosenPerson = people[expandedText] || people['111']; return chosenPerson.firstName; } }; </script>
이와 같이 변경하면 Hello {{#person}}111{{/person}}
템플리트가 Hello Small
로 확장되고 Hello {{#person}}222{{/person}}
템플리트가 Hello Big
으로 확장됩니다.
주:
Mustache 확장은 동기적으로 실행됩니다. 비동기 값을 검색해야 하는 경우 Mustache 확장을 실행하기 전에 모델 내에서 값을 확인해야 하며, 맞춤형 구현이 가능하지만 현재 지원되지 않습니다.