icon-check icon-sns-facebook icon-sns-twitter icon-sns-instagram icon-sns-line icon-sns-pinterest arrow icon__mail
GUIDE

Clipkit Liquidテンプレート言語リファレンス(タグ・フィルター)

Clipkitで構築するWEBサイトのフロントエンドをコーディングするためのLiquidテンプレート言語のリファレンスです。Clipkit独自のタグとフィルターを記載しています。

Clipkitはテンプレート言語として Liquid を採用しています。
本リファレンスでは、Clipkit独自の拡張機能のみを掲載しており、Liquidの基本仕様については Liquid公式リファレンス をご参照ください。

Liquidタグ(ブロックタグ)

paginate

配列またはRelationオブジェクトに対してページネーション機能を提供する

<!-- カテゴリーの記事を1ページ辺り20件ずつ表示する -->

{% paginate category.articles per 20 %}
  {% for article in paginate.collection %}
    {% render "article_template" %} <!-- 出力処理 -->
  {% endfor %}
{% endpaginate %}

selectfor

記事コレクションから特定の属性を選択してループ処理を高速に実行する

<!-- 記事タイトル、カテゴリ名、拡張項目attr_nameを記事一覧にを表示する -->

<div class="article-list">
  {% selectfor (title, category, url, attributes) in site.articles %}
    <div class="article-item">
      <a href="{{ url }}" class="article-link">
        <span class="title">{{ title }}</span>
        <span class="category">({{ category.name }})</span>
        <span class="attr">{{ attributes.attr_name }}</span>
      </a>
    </div>
  {% endselectfor %}
</div>

Liquidタグ(単体タグ)

collection

コレクションに登録された記事・画像・HTMLなどをを読み込む

{% collection 'top_page_slider' %}

file

リソースファイルのURLを取得する

<link rel="stylesheet" href="{% file '/theme/original/css/theme.css' %}">

form

フォームを描画する

{% form 'contact_form' %}

render

パーシャルテンプレートを描画する

<div class="article-list">
  {% selectfor (title, category, url) in site.articles | limit: 3 %}
    {% render "articles" %}
  {% endselectfor %}
</div>

widget

ウィジェットを描画する

{% widget 'aside_ad', id: '999' %}

Liquidフィルター(データベース操作)

search

指定したクエリ(検索語)を使って、該当する要素のみを抽出するフィルター

{% assign articles = site.articles | search: request.params["q"] %}

where

SQLを使用して条件抽出を行う

{% assign articles = site.articles | where: 'kind = ?', kind %}

find_by

指定条件でユニークな列名をキーとして、単一のレコードを取得する

{% assign article = site.articles | find_by: 'key', 'xxxxx' %}

limit

取得件数を指定する

<div class="article-list">
  {% selectfor (title, category, url) in site.articles | limit: 3 %}
    {% render "articles" %}
  {% endselectfor %}
</div>

order

取得するRelationに対して並び順を指定する

{% assign articles = site.articles | order: 'published_at ASC' %}

or

複数の配列(Liquidオブジェクトの配列)を OR 条件で結合し、1つの配列として扱える フィルター

{% assign articles_m  = site.articles | search: 'category:"male"' | to_array %}
{% assign articles_f = site.articles | search: 'category:"female"'  | to_array %}
{% assign articles = articles_m | or: articles_f %}

offset

レコードの取得開始位置を先頭からn件目に指定する

{% assign articles = site.articles | offset: 5 %}

next_to / prev_to

現在の記事から見て次の記事/前の記事の取得

{% assign next_article = article.category.articles | next_to: article %}
{% assign prev_article = article.category.articles | prev_to: article %}

size

レコード数を取得する

{% articles_size = articles | size %}
{% if articles_size > 0 %}
<!-- 記事が存在する時の処理 -->
{% else %}
<!-- 記事が存在しない時の処理 -->
{% endif %}

to_array / to_a

Relationを配列に変換する(最大200件で切り詰められます)

{% assign pref_array = site.articles | search: 'category:"prefecture"' | to_array %}

type

Liquid変数(配列・オブジェクトなど)の Rubyクラス名(型)を文字列で取得できるフィルター。

{{ site.articles | type }}
{{ article.title | type }}

Liquidフィルター(カスタム属性操作)

attribute

記事の拡張項目の値を取得します

{{ article.attributes.拡張項目Name(英数字) }}
<img src="{{ article.attributes.拡張項目Name(英数字)_medium }}">

search_by_attribute

拡張項目(attribute)に基づいて、記事を検索するためのフィルター

{% assign articles = site.articles | search_by_attribute: 'area', 'kanto', '= ?' %}

order_by_attribute

記事の拡張項目の値を基準にして並び替えを行うフィルター

{% assign sorted = site.articles | order_by_attribute: 'score', 'DESC' %}

Liquidフィルター(文字列操作)

auto_link

テキスト内に含まれる URLを自動的にリンク化するフィルター

{% assign sample_txt = "公式サイトはhttps://clipkit.coです。" %}
{{ sample_txt | auto_link }}

replace_regexp

正規表現を使って文字列を置換できる強力なフィルター

{% assign tag = "#ニュース" %}
{{ tag | replace_regexp: '^#', '' }}

match

引数に指定した 正規表現にマッチするかを調べ、マッチした部分文字列を返す フィルター

{% assign email = "user@example.com" %}
{% if email | match: '^[\\w._%+-]+@[\\w.-]+\\.[a-zA-Z]{2,}$' %}
  有効なメール形式です
{% else %}
  メール形式が不正です
{% endif %}

render_liquid

Liquidの構文を含んだ文字列を 「その場で評価してHTMLに変換する」 フィルター

{% assign heading_template = "{{ category.name }}の記事まとめ" %}

<h2>{{ heading_template | render_liquid }}</h2>

render_markdown

Markdown形式の文字列をHTMLに変換するフィルター

{% assign markdown_text = "**お知らせ**\n\n- 新商品登場\n- セール開催中!" %}
{{ markdown_text | render_markdown }}

unescape

HTMLエンティティ(<, >, &, " など)でエスケープされた文字列を、元の記号に戻すフィルター

{% assign text = &quot;Tom &amp;amp; Jerry&quot; %}

{{ text | unescape }}

wpautop

改行や段落の区切りに応じて、自動的に <p> や <br> タグを付加して、プレーンなテキストを見栄えよく整えるフィルター

{% assign body = &quot;これは1段落目です。\n\nこれは2段落目です。&quot; %}

{{ body | wpautop }}

Liquidフィルター(配列・コレクション操作)

hash_find

配列内のハッシュ(オブジェクト)の中から、指定した「キー」と「値」が一致する最初の1件を返す

{% assign collection = graphql_response.data.mainPage.collections | hash_find: &#39;namespace&#39;, &#39;ranking&#39; %}

&lt;h2&gt;{{ collection.title }}&lt;/h2&gt;

headings_per_page

記事の構造化済み本文(article.items)から見出しを抽出し、指定数ごとに分割された配列として返すフィルター

{% assign headings = article.items | headings_per_page: 15 %}

{% for heading in headings %}
  &lt;li&gt;&lt;a href=&quot;#{{ heading.id }}&quot;&gt;{{ heading.text }}&lt;/a&gt;&lt;/li&gt;
{% endfor %}

Liquidフィルター(データ変換)

to_json

オブジェクトをJSON文字列に変換するフィルター

&lt;script&gt;
  const articleData = {{ article | to_json }};
&lt;/script&gt;

json_parse / to_hash

Liquidオブジェクトや配列・ハッシュをJSON文字列に変換する

  {{ json_string | json_parse }}
  {{ json_string | to_hash }}

format_number

数値を3桁ごとにカンマで区切ってフォーマットするフィルター

{% assign price = &quot;123456789&quot; %}
¥ {{ price | format_number }}

Liquidフィルター(URL・パス操作)

find_path

配列の中から指定したパス文字列と一致する要素(タグ・カテゴリなど)を探して返すフィルター

{% assign tag = site.all_tags | find_path: &quot;/tags/tech/html&quot; %}
&lt;h2&gt;{{ tag.name }}&lt;/h2&gt;
{% assign category = site.all_categories | find_path: &quot;/travel/japan/kyoto&quot; %}
&lt;h1&gt;{{ category.name }}&lt;/h1&gt;

prepend_path

2つのパスを結合し、先頭にパスを追加した形に整形するフィルター

{{ tag.path | prepend_path: category.path }}

resize

画像のURLに対して動的なリサイズパラメータを付与し、変換された画像を取得するフィルター

{{ item.image_original_url | resize: &quot;width:320&quot; }}
アスペクト比を維持したまま横幅320pxにリサイズされる
{{ item.image_original_url | resize: &quot;width:320,height:320&quot; }}
長辺は切り取られ、高さ・横幅320pxの正方形にリサイズされる
{{ item.image_original_url | resize: &quot;size:320&quot; }}
アスペクト比を維持したまま長辺が320pxにリサイズされる
123 件

関連するガイド

Clipkit Liquidテンプレート言語リファレンス(オブジェクト・メソッド)

Clipkit Liquidテンプレート言語リファレンス(オブジェクト・メソッド)