Shopifyのディレクトリ構造について
この記事では、Shopifyのディレクトリ構造について説明します。
全体のディレクトリ構造
Shopifyは7つのフォルダから構成されています。
この7つのフォルダは
・ページの外観を大まかに構成
・ページの装飾・設定・翻訳
の2つの役割に大きく分けられます。
レイアウト
・テンプレート
・セクション
・スニペット
のページ構成の関係は図にすると次のようになります。
レイアウト(Layout)
レイアウトは、全てのページで共通するHTMLタグを記述するためのものです。
html・meta・bodyなどのHTMLタグが記述されているファイルが格納されています。
レイアウトには、
・password.liquid
・theme.liquid
の2つのファイルが格納されています。
password.liquid
は、パスワードを設定した場合に表示されるページを編集するためのものです。
このページのことですね!
password.liquid
は基本的に編集することはありません。
ストアを公開すると不要になりますからね!
theme.liquid
は、head
タグ内のCSS・JSファイルの読み込みや、ヘッダー・メイン・フッターなどの共通セクションのタグを設置しています。
とは言え、ヘッダーやフッターのセクションはbody
タグ内の
{% section 'header' %}
{% section 'footer' %}
で読み込んでいるだけです。なので、直接編集したい場合はセクションを編集する必要がありますね!
ちなみにページのmain部分の表示は、body
タグ内の
{{content_for_layout}}
でテンプレートファイルが読み込まれます。
テンプレート(Templates)
テンプレートは、各ページごとの枠組みを作成するためのものです。
テンプレートには、20個のファイルが格納されています。
それぞれのファイルは、レイアウトのmain部分で読み込まれます。
ファイル名で、どのファイルがどのページに該当するか想像しやすいですね!
例えば、index.json
はホームページ、product.json
は商品ページとなります。
セクション(Sections)
セクションは、テンプレートを構成するパーツのようなものです。
レイアウトとテンプレートで読み込まれます。
かなりのファイル数で、その数49個あります。
※多すぎるので、図での紹介は省きます。
テーマエディタで「セクションを追加」とあるように、セクションはノーコードで編集可能です。
ファイル名で、どのファイルがどのセクションに該当するか想像しやすいですね!
例えば、rich-text.liquid
は「リッチテキスト」になります。
さらにセクション自体を自分で新しく作ることもできます。
テーマエディタでの編集の幅を広げることも可能です。
スニペット(Snippets)
スニペットは、各ページ内で使用する細かい部品のLiquidファイルが入っています。
例えば、icon-facebook.liquid
はfacebookアイコンのSVGを指します。
レイアウト、テンプレート、セクション、スニペットどのファイルからも呼び出して利用することができます。
セクションはテーマエディタでノーコード編集できると説明しましたが、スニペットはそれが編集できません。
なので、スニペットを編集するには、直接コード編集が必要となります。
スニペットを使用するときは、
{% render 'ファイル名' %}
と記述します。
※{% include 'ファイル名' %}
で呼び出すこともあるそうですが、現在非推奨となっているようです。
設定(Config)
設定は、テーマエディタで設定した内容や、その内容を新しく定義したりします。
設定には、
・settings_data.json
・settings_schema.json
の2つのファイルが格納されています。
settings_data.json
は、テーマエディタで設定されたデータが保存されています。
settings_data.json
のコードから編集も可能です。
settings_schema.json
はテーマエディタから変更可能な内容を定義します。
なので、テーマエディタで変更可能な設定項目を追加したいときにコード編集します。
アセット(Assets)
アセットは、テーマで使用するCSSやJavaScrip、画像などのファイルを格納しています。
例えば、base.css
はレイアウトで読み込まれています。
base.css
ファイルを読み込みたいときは、
{{ 'base.css' | asset_url | stylesheet_tag }}
と記述して呼び出します。
注意として、アセット内にフォルダを作成(サブディレクトリ)することができません。
なので、「新しいアセットを追加する」から直接アセットの配下にファイルを追加する形になります。
ロケール(Locales)
ロケールには、翻訳jsonファイルが格納されています。
デフォルトで多言語対応できているのは凄いですね!
ページで表示される日本語は、ja.json
で編集可能です。
同じ編集は、管理画面でも可能です。
テーマ
→アクション
→言語を編集
を選択します。
両方から編集するとバッティングする可能性があるので、基本的には管理画面で編集する方が良さそうですね!
終わり
以上となります。フォルダ構造が明確になると、どこを編集するればよいか明確になりますね!
Discussion