작성자 : 박찬영

마지막 업데이트 : 2024년 03월 21일

블로그 템플릿

블로그 템플릿은 해당 블로그의 게시물들을 나열하는 리스트 페이지개별 게시물 페이지로 구성됩니다.
리스트 페이지는 작성자(author) 및 태그(tag) 목록 페이지를 렌더링하는 데에도 사용됩니다.


리스트 페이지 필터링

리스트 페이지는 if문을 사용하여 각각의 페이지에 맞게 작업할 수 있습니다.

  • Hubl

{@% if blog_author %@}
<!-- 작성자 아카이브 페이지인경우 -->

{@% elif tag %@}
<!-- 태그 아카이브 페이지인경우 -->

{@% else %@}
<!-- 리스트 페이지인경우 -->

{@% endif %@}


게시물 나열하기

게시물 목록은 for문으로 나열할 수 있습니다.  contents는 해당 페이지에 포함된 모든 게시물을 가지고 있는 사전 정의된 변수입니다.
  • Hubl

<section class='articleWrap'>
  {@% for content in contents %@}
  <article>
    {@# 포스트 url #@}
    <a href="{@{content.absolute_url}@}" class='post'>label</a>
    {@# 썸네일 이미지, 썸네일 이미지 alt 텍스트 #@}
    <img src='{@{content.featured_image ? content.featured_image : get_asset_url("기본 이미지 src")}@}' alt="{@{ content.featured_image_alt_text }@}">
    {@# 포스트 제목 #@}
    <h2>{@{content.name}@}</h2>
    {@# 포스트 메타 데스크립션 #@}
    <h3>{@{content.meta_description}@}</h3>
    {@# 발행일 #@}
    <p>{@{ content.publish_date | format_date('yyyyy.MMMM.dd') }@}</p>
    {@# 포스트 본문영역 코드 제외하고 가져오기 #@}
    <p>{@{ content.post_body|striptags }@}</p> 
    {@# 포스트 태그 리스트 #@}
    <ul>
      {@% for tag in content.tag_list %@}
      <li><a href="{@{ blog_tag_url(group.id, tag.slug) }@}">{@{ tag }@}</a></li>
      {@% endfor %@}
    </ul>
  </article>
  {@% endfor %@}
</section>


게시물 관련 변수

아래 변수는 게시물의 정보를 출력합니다.
해당 변수가 가지고 있는 모든 정보를 보려면 pprint 필터를 사용해 보십시오

  • 변수명

    타입

    설명

  • String

    게시물 제목

    • content.title
  • String

    게시물 url

  • String

    썸네일 src

  • String

    썸네일 alt 텍스트

  • String

    게시물 메타 데스크립션

  • Dict

    태그들(배열)의 정보를 출력합니다. 

    • tag.name(태그명)
    • tag.slug(태그 url명)
    • blog_tag_url(group.id, tag.slug)(태그 url)
    • content.topic_list
  • String

    저자명
    객체 형태로 쓰면 더 다양한 정보를 가져올 수 있습니다. 

    • content.blog_post_author.avatar
  • Integer

    발행일
    • content.publish_date|format_date('yyyyy.MMMM.dd')
  • Integer

    마지막 수정일

    • content.updated|format_date('yyyyy.MMMM.dd')
  • String

    게시물 본문

    • content.post_body|striptags(코드 제외하기)
  • String

    이전글 slug url

  • String

    이전글 썸네일 src

  • String

    이전글 썸네일 alt 텍스트

  • String

    이전글 제목

  • String

    다음글 slug url

  • String

    다음글 썸네일 src

  • String

    다음글 썸네일 alt 텍스트

  • String

    다음글 제목

페이지 관련 변수

블로그 리스트 페이지와 관련된 변수입니다.

  • 변수명

    타입

    설명

  • Boolean

    페이지가 1개인지 여부를 출력합니다.

  • Integer

    총 페이지 수

  • Integer

    리스트(일반,태그,작성자)의 총 게시물 수

  • Integer

    현재 페이지 번호

  • Integer

    이전 페이지 번호

  • Integer

    다음 페이지 번호

  • String

    해당 블로그의 모든 태그들을 출력합니다.


태그 리스트 가져오기

함수는 지정된 블로그에 대해 가장 많이 게시된 태그(최대 250개)를 반환합니다.
각 태그의 게시물 수는 tag.live_posts로 출력할 수 있습니다.
매개변수 1 : 태그를 가져올 블로그 id
매개변수 2 : 가져오는 태그 수

  • Hubl
  • 출력값
{@{ blog_tags("default", 250) }@}

{@% set my_tags = blog_tags("default", 250) %@}
<ul>
{@% for item in my_tags %@}
<li><a href="{@{ blog_tag_url(group.id, item.slug) }@}">{@{ item }@}</a></li>
{@% endfor %@}
</ul>
[ Blogging, Inbound Marketing, SEO, Social Media]

<ul>
<li><a href="http://blog.hubspot.com/marketing/tag/blogging"></a></li></li>
<li><a href="http://blog.hubspot.com/marketing/tag/inbound-marketing">Inbound Marketing</a></li></li>
<li><a href="http://blog.hubspot.com/marketing/tag/seo">SEO</a></li>
<li><a href="http://blog.hubspot.com/marketing/tag/social-media">Social Media</a></li></li>
</ul>

작성자 리스트 가져오기

함수는 지정된 블로그에 대해 작성자 개체를 slug 오름차순으로 가져옵니다.
작성자별 게시물 수는 author.live_posts로 출력할 수 있습니다.

참고: 이 기능의 작성자는 250명으로 제한됩니다. 이 기능은 페이지당 호출 횟수가 10회로 제한됩니다.

매개변수 1 : 작성자를 가져올 블로그 id
매개변수 2 : 가져오는 작성자 수

  • Hubl
  • 출력값
{@{ blog_authors("default", 250) }@}

{@% set my_authors = blog_authors("default", 250) %@}
<ul>
{@% for author in my_authors %@}
<li><a href="{@{ blog_author_url(group.id, author.slug) }@}">{@{ author }@}</a></li>
{@% endfor %@}
</ul>
[ Brian Halligan, Dharmesh Shah, Katie Burke, Kipp Bodnar]

<ul>
<li><a href="http://blog.hubspot.com/marketing/author/brian-halligan">Brian Halligan</a></li></li>
<li><a href="http://blog.hubspot.com/marketing/author/dharmesh-shah">Dharmesh Shah</a></li></li>
<li><a href="http://blog.hubspot.com/marketing/author/katie-burke">Katie Burke</a></li></li>
<li><a href="http://blog.hubspot.com/marketing/author/kipp-bodnar">Kipp Bodnar</a></li></li>
</ul>

총 게시물 수 가져오기

함수는 지정된 블로그에 게시된 게시물의 총 개수를 반환합니다. 
매개변수 1 : 계산할 블로그를 지정합니다. 블로그 ID는 모듈 blog 필드 에 의해 확인할 수 있습니다 .

  • Hubl
  • 출력값
{@{ blog_total_post_count }@} 
{@{ blog_total_post_count(359485112) }@}
16
54

게시물 정렬

필터는 특정 속성값을 기준으로 게시물의 순서를 바꿉니다.
매개변수 1 : 순서를 반대로 바꾸는 boolean
매개변수 2 : 대소문자 구분 여부 boolean
매개변수 3 : 정렬 기준이 되는 속성값

  • Hubl
  • 출력값
{@% set my_posts = blog_recent_posts("default", limit=5) %@}

{@% for item in my_posts|sort(False, False, "name") %@}
{@{ item.name }@}<br>

{@% endfor %@}
A post<br>
B post<br>
C post<br>
D post<br>
E post<br>

날짜 형식 변경

필터는 날짜 객체의 표시형식을 변환하여 출력합니다.
  • Hubl
  • 출력값
{@{ content.publish_date | format_date('long') }@}
{@{ content.publish_date | format_date('yyyyy.MMMM.dd') }@}
{@{ content.publish_date | format_date('medium', 'America/New_York', 'de-DE') }@}
November 28, 2022
2022.November.28
28.11.2022

페이지네이션

  • Hubl

현재 페이지 : {@{current_page_num}@} 
전체 페이지 수 : {@{contents.total_page_count}@} 
전체 포스트 수 : {@{ blog_total_post_count(group.id) }@}


<!-- 페이지 그룹 (5로 나누고 올림) -->
{@% set pageGroup = (current_page_num / 5)|round(0, "floor") %@} 
{@% set pageArr = [1,2,3,4,5] %@}

{@% for item in pageArr %@}
{@% set this_page = pageGroup * 5 + loop.index %@}
{@% if this_page <= contents.total_page_count %@}
<li class="number">
  <a class='{@{'active' if current_page_num == this_page}@}' href="{@{blog_page_link(this_page)}@}">{@{this_page}@}</a>
</li>
{@% endif %@}
{@% endfor %@}