Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

ShopifyのLiquidファイルの構造の話①

Last updated at Posted at 2020-11-09

#はじめに
今回は、ShopifyのLiquidファイルの構造について解説していきます。

コードを編集するからコードを編集していきましょう。

image.png

#Liquidファイルのテーマ構造
それでは、ShopifyのデフォルトテーマであるDebutのフォルダ構造を見ながら、各々の役割について解説していきます。

##クイックスタート
最初に、全体の構造をざっと確認してみましょう。

image.png

Shopifyのフォルダは大きく分けて、以下の7つに分けられます。

  • Layout
  • Templates
  • Sections
  • Snippets
  • Assets
  • Config
  • Locales

一つ一つの役割をざっくりと解説してきます。
###Layout
LayoutはShopify内の大きな塊のファイルが格納されています。具体的には、ギフトカードをレンダリングするgift_card.liquidや、パスワードページをレンダリングするpassword.liquid、また、Shopifyのホームであるtheme.liquidなどが格納されています。

この中でも特に大事なのがtheme.liquidで、決済以外のページで使用されるマスターテンプレートになっています。そして、このbodyタグの中にある{{content_for_layout}}に。各ページのテンプレートファイルが読み込まれます。

image.png

上記の構造から分かるように、headerfootercontent_for_layoutの外で呼び出されていることが分かります。そのため、どのテンプレートファイルを用いても、headerfooterが共通で表示されます。

##Templates
Templatesはその名の通り、様々なファイルのテンプレートを作成するファイルです。構造は以下のようになります。

image.png

article.liquidblog.liquidという名前から分かるように、Shopify内で作成するブログや記事のテンプレートが格納されることになります。つまり、このテンプレートファイルを弄ることで、ブログや記事の見ためを変更することが可能です。

また、page.liquidpage.contact.liquidファイルは、Shopifyの管理画面のページから作成するテンプレートファイルです。

image.png
image.png

試しに、page.liquidの中身を見てみましょう。

page.liquid
<div class="page-width">
  <div class="grid">
    <div class="grid__item medium-up--five-sixths medium-up--push-one-twelfth">
      <div class="section-header text-center">
        <h1>{{ page.title }}</h1>
      </div>

      <div class="rte">
        {{ page.content }}
      </div>
    </div>
  </div>
</div>

通常のHTMLと異なるのは、{{ page.title }}{{ page.content }}の部分です。

ちなみに、liquidの中ではview(見た目の部分)に表示するコードは{{}}で囲い、論理の部分でviewに表示しない部分は{%%}で囲います。この部分はRuby on Railsの.html.erbファイルに近いですね。

今回は{{}}で囲っているため、これはviewに表示するコードであることが分かります。

そして、page.titleは、ユーザーがページを作成するときに記入するタイトルが格納されます。以下の部分です。
image.png

テンプレートの中では、テンプレート名.~で、プロパティを参照できます。この場合、テンプレート名がpage.liquidpage.example.liquidなので、page.titlepage.contentでプロパティを参照できます。

このページテンプレートを作成する例では、Titleがpage.titleに、コンテンツがpage.contentに格納されます。そして、viewの中でそれらを使用することができます。

###Templateの中でSectionを呼び出す
Sectionは、Templateの中で呼び出します。

product.liquidの中身を見てみると分かりやすいです。

image.png

セクションは。Shopify内でカスタマイズできる一つ一つの部品です。
image.png

上の画像で赤色の線を引いたそれぞれがSectionになっています。

つまり、ここまでの話をまとめると、Sectionという一つ一つの部品をTemplateで呼び出して使用して、決済以外の全てのTemplateがTheme.liquidで呼び出されている、ということになります。

#終わりに
今回の記事はここまでになります。

次回の記事でSnippetsやAssetsについて取り扱って行きたいと思います。

ここまで読んでくださりありがとうございました。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?