SCF Handlebars Helpers

⇐ 기능 핵심 사항 서버 측 사용자 지정 ⇒
클라이언트측 사용자 지정 ⇒

Handlebars Helper(helper)는 SCF 구성 요소 작업을 용이하게 하기 위해 Handlebars 스크립트에서 호출할 수 있는 메서드입니다.

구현에는 클라이언트측 및 서버측 정의가 포함됩니다. 개발자가 사용자 지정 helper를 만들 수도 있습니다.

AEM Communities과 함께 제공되는 사용자 지정 SCF 도움말은 클라이언트 라이브러리:

  • /etc/clientlibs/social/commons/scf/helpers.js
노트

를 반드시 설치하십시오 최신 커뮤니티 기능 팩.

생략

maxWords 및 maxLength 속성을 따르는 약식 문자열을 반환하는 도우미.

축약할 문자열은 컨텍스트로 제공됩니다. 제공된 컨텍스트가 없으면 빈 문자열이 반환됩니다.

먼저 컨텍스트를 maxLength로 트리밍한 다음 컨텍스트를 단어로 잘라서 maxWords로 줄입니다.

safeString을 true로 설정하면 반환된 문자열이 SafeString입니다.

매개변수

  • 컨텍스트: 문자열

    (선택 사항) 기본값은 빈 문자열입니다

  • maxLength: 숫자

    (선택 사항) 기본값은 컨텍스트 길이입니다.

  • maxWords: 숫자

    (선택 사항) 기본값은 트림된 문자열의 단어 수입니다.

  • safeString: 부울

    (선택 사항) true이면 Handlebars.SafeString() 을 반환합니다. 기본값은 false입니다.

{{abbreviate subject maxWords=2}}

/*
If subject =
    "AEM Communities - Site Creation Wizard"

Then abbreviate would return
    "AEM Communities".
*/
{{{abbreviate message safeString=true maxLength=30}}}

/*
If message =
    "The goal of AEM Communities is to quickly create a community engagement site."

Then abbreviate would return
    "The goal of AEM Communities is"
*/

컨텐츠 로드 자세히

두 개의 범위를 div 아래에 추가하는 도우미가, 전체 텍스트에 대해 하나씩, 덜 사용되는 텍스트에 대해 하나씩, 두 보기 간에 전환할 수 있습니다.

매개변수

  • 컨텍스트: 문자열

    (선택 사항) 기본값은 빈 문자열입니다.

  • numChars: 숫자

    (선택 사항) 전체 텍스트를 표시하지 않을 때 표시할 문자 수입니다. 기본값은 100입니다.

  • moreText: 문자열

    (선택 사항) 표시할 텍스트가 더 있음을 나타내는 텍스트입니다. 기본값은 "자세히"입니다.

  • 줄임표 텍스트: 문자열

    (선택 사항) 숨겨진 텍스트가 있음을 나타내는 텍스트입니다. 기본값은 "…"입니다.

  • safeString: 부울

    (선택 사항) 결과를 반환하기 전에 Handlebars.SafeString()을 적용할지 여부를 나타내는 부울 값입니다. 기본값은 false입니다.

{{content-loadmore  context numChars=32  moreText="go on"  ellipsesText="..." }}

/*
If context =
    "Here is the initial less content and this is more content."

Then content-loadmore would return
    "Here is the initial less content<span class="moreelipses">...</span> <span class="scf-morecontent"><span>and this is more content.</span>  <a href="" class="scf-morelink" evt="click=toggleContent">go on</a></span>"
*/

DateUtil

형식이 지정된 날짜 문자열을 반환하는 도우미.

매개변수

  • 컨텍스트: 숫자

    (선택 사항) 1970년 1월 1일부터 오프셋(epoch)인 밀리초 값입니다. 기본값은 현재 날짜입니다.

  • 포맷: 문자열

    (선택 사항) 적용할 날짜 형식입니다. 기본값은 "YYYY-MM-DDHH입니다.:mm:s.sssZ"로 표시되고 결과는 "2015-03-18T18"으로 표시됩니다:17:13-07:00"

{{dateUtil this.memberSince format="dd MMM yyyy, hh:mm"}}

// returns "18 Mar 2015, 18:17"
{{dateUtil this.birthday format="MM-DD-YYYY"}}

// returns "03-18-2015"

다음과 같음

같음 조건자에 따라 콘텐츠를 반환하는 도우미.

매개변수

  • lvalue: 문자열

    비교할 왼쪽 값입니다.

  • rvalue: 문자열

    비교할 오른쪽 값입니다.

{{#equals  value "some-value"}}
  <div>They are EQUAL!</div>
{{else}}
  <div>They are NOT equal!</div>
{{/equals}}

If-wcm-mode

의 현재 값을 테스트하는 블록 도우미 WCM 모드 문자열로 구분된 모드 목록을 표시합니다.

매개변수

  • 컨텍스트: 문자열

    (선택 사항) 번역할 문자열입니다. 기본값이 제공되지 않을 경우 필수입니다.

  • 모드: 문자열

    (선택 사항) 쉼표로 구분된 목록 WCM 모드 를 입력하여 가 설정되었는지 확인합니다.

{{#if-wcm-mode mode="DESIGN, EDIT"}}
 ...
{{else}}
 ...
{{/if-wcm-mode}}

i18n

이 도우미는 Handlebars 도우미 'i18n'을 무시합니다.

참조 - JavaScript 코드에서 문자열 다국어화.

매개변수

  • 컨텍스트: 문자열

    (선택 사항) 번역할 문자열입니다. 기본값이 제공되지 않을 경우 필수입니다.

  • 기본: 문자열

    (선택 사항) 번역할 기본 문자열입니다. 제공된 컨텍스트가 없는 경우 필요합니다.

  • 댓글: 문자열

    (선택 사항) 번역 힌트입니다

{{i18n "hello"}}
{{i18n "hello" comment="greeting" default="bonjour"}}

포함

템플릿에 구성 요소를 존재하지 않는 리소스로 포함할 도우미.

이를 통해 JCR 노드로 추가된 리소스에 대해 가능한 것보다 프로그래밍 방식으로 리소스를 사용자 지정할 수 있습니다. 자세한 내용은 커뮤니티 구성 요소 추가 또는 포함.

일부 Communities 구성 요소만 포함할 수 있습니다. AEM 6.1의 경우, 포함된 항목은 다음과 같습니다 댓글, 등급, 검토, 및 투표.

이 도우미는 서버측에서만 적절한 것으로, 와 유사한 기능을 제공합니다 cq:include JSP 스크립트용.

매개변수

  • 컨텍스트: 문자열 또는 개체

    (상대 경로를 제공하지 않는 한 선택 사항입니다)

    사용 this 를 눌러 현재 컨텍스트를 전달합니다.

    사용 this.id 에서 리소스를 가져오려면 id 요청된 resourceType을 렌더링하기 위해 입니다.

  • resourceType: 문자열

    (선택 사항) 리소스 유형은 기본적으로 컨텍스트의 리소스 유형으로 설정됩니다.

  • 템플릿: 문자열

    구성 요소 스크립트의 경로입니다.

  • 경로: 문자열

    (필수) 리소스의 경로입니다. 경로가 상대적이면 컨텍스트를 제공해야 하며, 그렇지 않으면 빈 문자열이 반환됩니다.

  • authoringDisabled: 부울

    (선택 사항) 기본값은 false입니다. 내부용입니다.

{{include this.id path="comments" resourceType="social/commons/components/hbs/comments"}}

여기에는 새 주석 구성 요소가 포함됩니다. this.id + /comments.

IncludeClientLib

js, css 또는 테마 라이브러리일 수 있는 AEM html 클라이언트 라이브러리를 포함하는 도우미. js 및 css와 같은 다양한 유형의 여러 포함을 위해 이 태그를 Handlebars 스크립트에서 여러 번 사용해야 합니다.

이 도우미는 서버측에서만 적절한 것으로, 와 유사한 기능을 제공합니다 ui:includeClientLib JSP 스크립트용.

매개변수

  • 카테고리: 문자열

    (선택 사항) 쉼표로 구분된 클라이언트 라이브러리 카테고리 목록입니다. 여기에는 지정된 카테고리에 대한 모든 Javascript 및 CSS 라이브러리가 포함됩니다. 요청에서 테마 이름이 추출됩니다.

  • 테마: 문자열

    (선택 사항) 쉼표로 구분된 클라이언트 라이브러리 카테고리 목록입니다. 여기에는 지정된 카테고리에 대한 모든 테마 관련 라이브러리(CSS와 JS 모두)가 포함됩니다. 요청에서 테마 이름이 추출됩니다.

  • js: 문자열

    (선택 사항) 쉼표로 구분된 클라이언트 라이브러리 카테고리 목록입니다. 여기에는 지정된 카테고리에 대한 모든 Javascript 라이브러리가 포함됩니다.

  • css: 문자열

    (선택 사항) 쉼표로 구분된 클라이언트 라이브러리 카테고리 목록입니다. 여기에는 지정된 카테고리의 모든 CSS 라이브러리가 포함됩니다.

// all: js + theme (theme-js + css)
{{includeClientLib categories="cq.social.hbs.comments, cq.social.hbs.voting"}}

// returns
    <link href="/etc/clientlibs/social/hbs/tally/voting.css" rel="stylesheet" type="text/css">
    <link href="/etc/clientlibs/social/hbs/socialgraph.css" rel="stylesheet" type="text/css">
    <link href="/etc/clientlibs/social/hbs/comments.css" rel="stylesheet" type="text/css">
    <script src="/etc/clientlibs/social/hbs/tally/voting.js" type="text/javascript"></script>
    <script src="/etc/clientlibs/social/hbs/socialgraph.js" type="text/javascript"></script>
    <script src="/etc/clientlibs/social/hbs/comments.js" type="text/javascript"></script>

// only js libs
{{includeClientLib js="cq.social.hbs.comments, cq.social.hbs.voting"}}

// returns
    <script src="/etc/clientlibs/social/hbs/tally/voting.js" type="text/javascript"></script>
    <script src="/etc/clientlibs/social/hbs/socialgraph.js" type="text/javascript"></script>
    <script src="/etc/clientlibs/social/hbs/comments.js" type="text/javascript"></script>

// theme only (theme-js + css)
{{includeClientLib theme="cq.social.hbs.comments, cq.social.hbs.voting"}}

// returns
    <link href="/etc/clientlibs/social/hbs/tally/voting.css" rel="stylesheet" type="text/css">
    <link href="/etc/clientlibs/social/hbs/comments.css" rel="stylesheet" type="text/css">
    <script src="/etc/clientlibs/social/hbs/tally/voting.js" type="text/javascript"></script>
    <script src="/etc/clientlibs/social/hbs/comments.js" type="text/javascript"></script>

// css only
{{includeClientLib css="cq.social.hbs.comments, cq.social.hbs.voting"}}

// returns
    <link href="/etc/clientlibs/social/hbs/tally/voting.css" rel="stylesheet" type="text/css">
    <link href="/etc/clientlibs/social/hbs/socialgraph.css" rel="stylesheet" type="text/css">
    <link href="/etc/clientlibs/social/hbs/comments.css" rel="stylesheet" type="text/css">

시간 도우미에서 일정 날짜 형식이 표시되는 마감 지점까지 경과된 시간을 표시합니다.

예:

  • 12시간 전
  • 7일 전

매개변수

  • 컨텍스트: 숫자

    과거에 '지금'에 비교할 시간입니다. 시간은 1970년 1월 1일(epoch)부터 오프셋된 밀리초 값으로 표시됩니다.

  • daysCutoff: 숫자

    실제 날짜로 전환하기 전 일 수입니다. 기본값은 60입니다.

{{pretty-time this.published daysCutoff=7}}

/*
Depending on how long in the past, may return

  "3 minutes ago"

  "3 hours ago"

  "3 days ago"
*/

Xss-html

XSS를 방지하는 데 도움이 되도록 HTML 요소 컨텐츠에 대한 소스 문자열을 인코딩하는 도우미.

참고: 유효성 검사기가 아니며, 특성 값을 쓰는 데 사용할 수 없습니다.

매개변수

  • 컨텍스트: 개체

    인코딩할 HTML.

<p>{{xss-html forum-ugc}}</p>

Xss-htmlAttr

XSS를 방지하기 위해 HTML 속성 값에 쓸 소스 문자열을 인코딩하는 도우미입니다.

참고: 이것은 유효성 검사기가 아니며, 실행 가능한 속성(href, src, 이벤트 핸들러)을 쓰는 데 사용할 수 없습니다.

매개변수

  • 컨텍스트: 개체

    인코딩할 HTML.

<div id={{xss-htmlAttr id}} />

Xss-jsString

XSS를 방지하기 위해 JavaScript 문자열 컨텐츠에 쓸 소스 문자열을 인코딩하는 도우미.

참고: 유효성 검사기가 아니며, 임의 JavaScript에 쓰는 데 사용할 수 없습니다.

매개변수

  • 컨텍스트: 개체

    인코딩할 HTML.

var input = {{xss-jsString topic-title}}

Xss-validHref

XSS를 방지하기 위해 HTML href 또는 srce 속성 값으로 쓸 URL을 정리하는 도우미입니다.

참고: 빈 문자열을 반환할 수 있습니다

매개변수

  • 컨텍스트: 개체

    가릴 URL입니다.

<a href="{{xss-validHref url}}">my link</a>

Handlebars.js 기본 개요

  • Handlebars 도우미 호출은 간단한 식별자(즉, 이름 뒤에 0개 이상의 공백으로 구분된 매개 변수가 옵니다.

  • 매개 변수는 간단한 문자열, 숫자, 부울 또는 JSON 개체일 수 있으며, 마지막 매개 변수로서 선택적 키-값 쌍(해시 인수) 시퀀스가 있을 수 있습니다.

  • 해시 인수의 키는 단순 식별자여야 합니다.

  • 해시 인수의 값은 Handlebars 표현식입니다. 단순 식별자, 경로 또는 문자열

  • 현재 컨텍스트 this은 항상 Handlebars 도우미가 사용할 수 있습니다.

  • 컨텍스트는 문자열, 숫자, 부울 또는 JSON 데이터 개체일 수 있습니다.

  • 다음과 같이 현재 컨텍스트 내에 중첩된 개체를 컨텍스트로 전달할 수 있습니다 this.url 또는 this.id ( 단순 및 블록 도움말에 대한 다음 예제 참조).

  • 블록 도우미는 템플릿의 모든 위치에서 호출할 수 있는 함수입니다. 매번 다른 컨텍스트에서 템플릿 블록을 0회 이상 호출할 수 있습니다. 여기에는 다음 사이의 컨텍스트가 포함됩니다 {{#name}} and {{/name}}.

  • Handlebars는 'options'라는 이름의 지원자에게 최종 매개 변수를 제공합니다. 특수 개체 'options'에는 다음이 포함됩니다

    • 선택적 개인 데이터(options.data)
    • 호출에서 선택적 키-값 속성(options.hash)
    • 자체 호출 기능(options.fn())
    • 자체의 역수를 호출하는 기능(options.inverse())
  • 도우미에서 반환된 HTML 문자열 콘텐츠는 SafeString인 것이 좋습니다.

Handlebars.js 설명서의 간단한 도우미 예제:

Handlebars.registerHelper('link_to', function(title, options) {
    return new Handlebars.SafeString('<a href="/posts' + this.url + '">' + title + "!</a>");
});

var context = {posts: [
    {url: "/hello-world",
      body: "Hello World!"}
  ] };

// when link_to is called, posts is the current context
var source = '<ul>{{#posts}}<li>{{{link_to "Post"}}}</li>{{/posts}}</ul>'

var template = Handlebars.compile(source);

template(context);

이 렌더링됩니다.

<ul>
<li><a href="/posts/hello-world">포스트!</a></li>
</ul>

Handlebars.js 설명서의 블록 도우미의 예:

Handlebars.registerHelper('link', function(options) {
    return new Handlebars.SafeString('<a href="/people/' + this.id + '">' + options.fn(this) + '</a>');
});

var data = { "people": [
  { "name": "Alan", "id": 1 },
  { "name": "Yehuda", "id": 2 }
]};

// when link is called, people is the current context
var source = "<ul>{{#people}}<li>{{#link}}{{name}}{{/link}}</li>{{/people}}</ul>";

var template = Handlebars.compile(source);

template(data);

이 렌더링됩니다.
<ul>
<li><a href="/people/1">앨런</a></li>
<li><a href="/people/2">예후다</a></li>
</ul>

사용자 지정 SCF 도움말

사용자 지정 도우미는 특히 데이터를 전달할 때 서버측뿐만 아니라 클라이언트측에도 구현해야 합니다. SCF의 경우, 서버가 페이지가 요청될 때 지정된 구성 요소에 대한 HTML을 생성하므로 대부분의 템플릿은 서버 측에서 컴파일되고 렌더링됩니다.

서버측 사용자 지정 도우미

서버 측에 사용자 지정 SCF 도우미를 구현하고 등록하려면 Java 인터페이스를 구현하면 됩니다 TemplateHelper, make it OSGi 서비스 OSGi 번들의 일부로 설치합니다.

예:

FooTextHelper.java

/** Custom Handlebars Helper */

package com.my.helpers;

import java.io.IOException;

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;

import com.adobe.cq.social.handlebars.api.TemplateHelper;
import com.github.jknack.handlebars.Options;

@Service
@Component
public class FooTextHelper implements TemplateHelper<String>{

    @Override
    public CharSequence apply(String context, Options options) throws IOException {
        return "foo-" + context;
    }

    @Override
    public String getHelperName() {
        return "foo-text";
    }

    @Override
    public Class<String> getContextType() {
        return String.class;
    }
}
노트

서버측을 위해 만들어진 도우미도 클라이언트측에 대해 만들어야 합니다.

구성 요소는 로그인한 사용자에 대해 클라이언트측에서 다시 렌더링되고, 클라이언트측 도우미가 없으면 구성 요소가 사라집니다.

클라이언트측 사용자 지정 도우미

클라이언트측 도움말은 를 호출하여 등록된 Handlebars 스크립트입니다 Handlebars.registerHelper().
예:

custom-helpers.js

function(Handlebars, SCF, $CQ) {

    Handlebars.registerHelper('foo-text', function(context, options) {
        if (!context) {
            return "";
        }
        return "foo-" + context;
    });

})(Handlebars, SCF, $CQ);

사용자 지정 클라이언트측 도움말을 사용자 지정 클라이언트 라이브러리에 추가해야 합니다.
clientlib은 다음 조건을 충족해야 합니다.

  • 종속성 포함 cq.social.scf.
  • Handlebars가 로드된 후 로드합니다.
  • Be 포함.

참고: SCF 도우미는 /etc/clientlibs/social/commons/scf/helpers.js.

⇐ 기능 핵심 사항 서버 측 사용자 지정 ⇒
클라이언트측 사용자 지정 ⇒

이 페이지에서는