Liquid Snippets by ALSEL
🏗️ テーマ基盤中級

テーマ全体のスタイルとスクリプト読み込み

Shopify のグローバル変数、ベンダーライブラリ(Bootstrap・Swiper)、テーマ固有の CSS・JS をまとめて読み込むスニペット。翻訳文字列も JavaScript オブジェクトとして事前に展開し、フロントエンド側から参照可能にする。

用途
theme.liquid の <head> 内で呼び出し、テーマ全体で共通で使う CSS・JS とカート操作や商品表示の翻訳文字列を一度に読み込みたいとき。
設置場所
snippets/styles-scripts.liquid に配置し、theme.liquid の <head> 内で `{% render 'styles-scripts' %}` で呼び出す。
注意点
shop.money_format と routes.* は Shopify が自動的に提供するグローバル変数なので、カスタムショップでも動作する。ただし翻訳キー('product.add_to_cart' など)が en.json など翻訳ファイルで定義されていることが前提。スクリプトの読み込み順序は defer 属性で制御されているため、base.js → sections.js → cart.js の順に実行されることを想定して各ファイルを設計する必要がある。Bootstrap と Swiper は外部ベンダーなので、テーマ内に vendor ディレクトリのアセット(vendor-bootstrap.min.css など)を配置しておく。
タグ:themescriptstylesheetvendorlocalizationglobal-variableshopify-api

コード

84 行 / liquid
{% comment %} 
  Global variables
{% endcomment %}
<script>
  Shopify.moneyFormat = '{{ shop.money_format }}'
  Shopify.routes = Shopify.routes || {}
  Shopify.routes.cart_add_url = '{{ routes.cart_add_url }}'
  Shopify.routes.cart_change_url = '{{ routes.cart_change_url }}'
  Shopify.routes.cart_update_url = '{{ routes.cart_update_url }}'
  Shopify.routes.cart_url = '{{ routes.cart_url }}'
  Shopify.routes.predictive_search_url = '{{ routes.predictive_search_url }}'
  theme = {
    locales: {
      accessibility: {
        remove: '{{ 'general.accessibility.remove' | t }}',
      },
      times: {
        ago: '{{ 'general.times.ago' | t }}',
        moments: '{{ 'general.times.moments' | t }}',
        second: '{{ 'general.times.second' | t }}',
        seconds: '{{ 'general.times.seconds' | t }}',
        minute: '{{ 'general.times.minute' | t }}',
        minutes: '{{ 'general.times.minutes' | t }}',
        hour: '{{ 'general.times.hour' | t }}',
        hours: '{{ 'general.times.hours' | t }}',
        day: '{{ 'general.times.day' | t }}',
        days: '{{ 'general.times.days' | t }}',
        expired: '{{ 'general.times.expired' | t }}',
      },
      product: {
        add_to_cart: '{{ 'product.add_to_cart' | t }}',
        buy_it_now: '{{ 'product.buy_it_now' | t }}',
        save: '{{ 'product.save' | t }}',
        sold_out: '{{ 'product.sold_out' | t }}',
        unavilable: '{{ 'product.unavilable' | t }}',
        quantity: '{{ 'product.quantity' | t }}',
        unavailable: '{{ 'product.unavailable' | t }}',
        product_options: '{{ 'product.product_options' | t }}',
        choose_options: '{{ 'product.choose_options' | t }}',
        quick_view: '{{ 'product.quick_view' | t }}',
        regular_price:'{{ 'product.regular_price' | t }}',
        sale_price: '{{ 'product.sale_price' | t }}',
      },
      wishlist: {
        add: '{{ 'general.wishlist.add' | t }}',
        remove: '{{ 'general.wishlist.remove' | t }}',
      }
    }
  }
</script>

{% comment %} 
  Vendor 
{% endcomment %} 
<link href="{{ 'vendor-bootstrap.min.css' | asset_url }}" rel="stylesheet">
<script src="{{ 'vendor-bootstrap.bundle.min.js' | asset_url }}" defer></script>
<link href="{{ 'vendor-swiper.bundle.min.css' | asset_url }}" rel="stylesheet">
<script src="{{ 'vendor-swiper.bundle.min.js' | asset_url }}" defer></script>

{% comment %} 
  Styles 
{% endcomment %}
<link href="{{ 'variables.css' | asset_url }}" rel="stylesheet">
<link href="{{ 'base.css' | asset_url }}" rel="stylesheet">
<link href="{{ 'sections.css' | asset_url }}" rel="stylesheet">
<link href="{{ 'cart.css' | asset_url }}" rel="stylesheet">
<link href="{{ 'collection.css' | asset_url }}" rel="stylesheet">
<link href="{{ 'product.css' | asset_url }}" rel="stylesheet">

{% comment %} 
  Scripts 
{% endcomment %}
<script src="{{ 'base.js' | asset_url }}" defer></script>
<script src="{{ 'sections.js' | asset_url }}" defer></script>
<script src="{{ 'cart.js' | asset_url }}" defer></script>
<script src="{{ 'collection.js' | asset_url }}" defer></script>
<script src="{{ 'product.js' | asset_url }}" defer></script>
<script src="{{ 'search.js' | asset_url }}" defer></script>

{% comment %} 
  Custom 
{% endcomment %}
<link href="{{ 'custom.css' | asset_url }}" rel="stylesheet">
<script src="{{ 'custom.js' | asset_url }}" defer></script>

出典・ライセンス

License:
MIT

このコードは kondasoft 著作の MIT ライセンスソースです。 原本の著作権は kondasoft が保有します。日本語訳は ALSEL によるものです。

関連項目

🏗️ テーマ基盤中級

セクションスキーマのカスタムブロック定義

セクションの schema ブロック内でカスタムブロックタイプを定義する方法を示すサンプル。@theme と _private というプレフィックスで異なるブロック種別を宣言する。

📁 theme-tools·MIT·7
🏗️ テーマ基盤初級

セクション呼び出しのフォーマット

Liquid の section タグを複数行に記述する際の正しいフォーマット例。タグ名を改行で分割しても正しく認識される書き方を示す。

📁 theme-tools·MIT·7
🏗️ テーマ基盤初級

レイアウトテンプレートの指定

Liquid の `layout` タグを使い、テーマのレイアウトファイルを指定する構文。複数のレイアウト候補と whitespace 制御(ダッシュ記号)の使い方を示す。

📁 theme-tools·MIT·8
🏗️ テーマ基盤上級

Liquid フォーマッター互換のセクション表記

Prettier Liquid プラグインのテストケースで、セクションタグの様々な書式を検証する。異なる間隔・改行・ホワイトスペーストリミングの組み合わせでもセクション名が崩れないことを確認する。

📁 theme-tools·MIT·9
🏗️ テーマ基盤初級

基本的なHTMLレイアウト

Prettier Liquid プラグインのテスト用に作られた最小限の HTML テンプレート。DOCTYPE から body タグまでの基本的なドキュメント構造を示す。

📁 theme-tools·MIT·10
🏗️ テーマ基盤上級

layout タグのフォーマット

Liquid の layout タグの書式をコード品質ツール(Prettier)でフォーマットするテストケース。スペースや改行位置の違いを正規化し、レイアウト名が壊れないことを検証する。

📁 theme-tools·MIT·10