サムネイル

Shopify の商品オプションを、 Line Item Property を使って実装する方法を徹底解説

目次

はじめに

今回は、Shopify の商品オプションを、Line Item Property を使って実装する方法解説していきます。

Shopify の商品オプションを使用すると、商品ページにアプリ無しで独自オプションを追加することができます。
そして、Line Item Property を使用することで、商品オプションを実装することが可能です。

この方法を利用すれば、商品に「名入れ」オプションや任意の備考を追加することも可能です。

それでは、解説していきます。

商品オプションを Line Item Property を使用して実装するとどうなるのか

最初に、商品オプションを Line Item Property を使用して実装するとどうなるのかについて解説していきます。

商品オプションとは、以下の画像のように商品ページに追加で設定する入力欄のことです。

追加で設定する入力欄

上記の入力欄にを使用すると、カート・注文のプロパティに入力した値が反映されます。
例として、上記の「お名前」の部分に、「山田太郎」と入力して購入してみましょう。

カート・注文のプロパティに入力した値の反映

この状態で、商品をカートに追加してみます。
そうすると、以下のようにカートのプロパティとして、先ほど入力した値が追加されています。

プロパティの表示

この状態で、商品を購入してみましょう。チェックアウトページに移動すると、以下のように入力した値が反映されています。

チェックアウトページへの表示

この状態で購入を行うと、注文オブジェクトに入力した値が反映されます。

注文オブジェクトに入力した値の反映

つまり、商品オプションを Line Item Property を使って実装すると、顧客が自由に入力した値を注文オブジェクトに反映することができます。こちらの機能を利用すれば、「名入れ」や「のし」の機能を実現することができます。

ちなみに、弊社のアプリである 「シンプルのし(熨斗)アプリ」「シンプルギフトラッピング|お手軽ギフト包装アプリ」 は、上記の Line Item Property を使って実装しています。

シンプルギフトラッピング|お手軽ギフト包装アプリ

「シンプルのし(熨斗)アプリ」 は、Line Item Property と、カート追加 API・商品作成の API を利用することで、実装しています。

こちらのアプリは、コーディングのみで実装するのが難しいので、アプリを利用した実装になるかと思います。

シンプルのしアプリ こちら からインストールすることができます。

公式のご利用ガイドもあるので、興味があるからはこちらから確認頂けます。

同様に、「シンプルギフトラッピング|お手軽ギフト包装アプリ」 も Line Item Property と、カート追加 API を利用することで実装しています。

シンプルギフトラッピング|お手軽ギフト包装アプリ

「シンプルギフトラッピング|お手軽ギフト包装アプリ」 こちら からインストールすることができます。

公式のご利用ガイドもあるので、興味があるからはこちらから確認頂けます。

こちらの記事では、Shopify から提供されている API 一覧を解説しています。
【アプリ開発者必見】Shopify が提供する API 一覧

ここまでで、商品オプションを Line Item Property を使用して実装するとどうなるのかについて解説しました。
次に、Line Item Property を利用して商品オプションを追加する具体的な実装方法について解説していきます。

商品オプションの実装方法

それでは次に、商品オプションの実装方法について解説していきます。

結論

結論から書くと、商品のフォームの中に input を作成し、input の name 要素に properties[お名前]と入力することで Line Item Property を利用することができます。

ちなみに、input の form 属性に form='product-form-{{ section.id }}' と入力することで、商品フォームの中にインプット要素を入れなくても、商品オプションを実装することが可能です。

それでは、具体的な実装手順を見ていきましょう。

具体的な実装方法

オンラインストア>コード編集 より、テーマのコードの編集画面に移動しましょう。

テーマのコード編集画面に移動

こちらで、main-product.liquid に移動します。

main-product.liquid に移動

form 'product' と書かれている部分を探しましょう。Ctrl + F で探せば、割と簡単に見つけることができます。

form 'product' と書かれている部分を探す

{%- form 'product', product, id: product_form_installment_id, class: 'installment caption-large' -%}
  <input type="hidden" name="id" value="{{ product.selected_or_first_available_variant.id }}">
  {{ form | payment_terms }}
{%- endform -%}

上記の部分が、Shopify の商品フォームの実体です。Line Item Property は、この中に name='properties[お名前]' の要素を格納することで実装することができます。

{%- form 'product', product, id: product_form_installment_id, class: 'installment caption-large' -%}
  <input type="hidden" name="id" value="{{ product.selected_or_first_available_variant.id }}">
  <input
    type='text'
    name='properties[お名前]'
    placeholder='名前を入力してください'
  >
  {{ form | payment_terms }}
{%- endform -%}

これで、下記の画像のようなフォームを追加することができました。properties[xxx]の xxx には任意の文字を入力することができます。この任意の文字が、プロパティのキーになります。

追加したフォーム

具体的には、今回はお名前と入力したので、商品オプションとしてお名前が追加されることになります。

お名前商品オプション

ここまでで、基本的な Line Item Property の使い方の解説は終了です。

ちなみに、 form='product-form-{{ section.id }}' の要素を追加することで、上記の form の部分の中にインプット要素を書かなくても、Line Item Property を利用することが可能です。

{%- form 'product', product, id: product_form_installment_id, class: 'installment caption-large' -%}
  <input type='hidden' name='id' value='{{ product.selected_or_first_available_variant.id }}'>
  {{ form | payment_terms }}
{%- endform -%}
<input
  type='text'
  name='properties[お名前]'
  placeholder='名前を入力してください'
  form='product-form-{{ section.id }}'
>

基本的には、form='product-form-{{ section.id }}' を書くことになるかと思います。このコードの意味としては、

{%- form 'product', product, id: product_form_installment_id, class: 'installment caption-large' -%}
  <input type='hidden' name='id' value='{{ product.selected_or_first_available_variant.id }}'>
  {{ form | payment_terms }}
{%- endform -%}

上記の部分で生成される以下のコードの、form の id を指定している形になります。

具体的には、以下の要素が生成されることになります。

<form method="post" action="/cart/add" id="product-form-template--15555335028815__main" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product"><input type="hidden" name="utf8" value="✓"><input type="hidden" name="id" value="41271482122319" class="product-variant-id"><div class="product-form__buttons"><button id="ProductSubmitButton-template--15555335028815__main" type="submit" name="add" class="product-form__submit button button--full-width button--secondary">
            <span>カートに追加する
</span>

<link href="//dev-sa-025-ur-name-option-app-2.myshopify.com/cdn/shop/t/1/assets/component-loading-spinner.css?v=116724955567955766481709893180" rel="stylesheet" type="text/css" media="all">

<div class="loading__spinner hidden">
  <svg aria-hidden="true" focusable="false" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
    <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
  </svg>
</div>
</button><div data-shopify="payment-button" class="shopify-payment-button"> <dynamic-checkout wallet-configs="[]" access-token="eccfec89d9db6941381248569759a8c5" buyer-country="JP" buyer-locale="ja" buyer-currency="JPY" variant-params="[{&quot;id&quot;:41271482122319,&quot;requiresShipping&quot;:true}]" shop-id="58629521487"><style>dynamic-checkout .wallet-button-fade-in,cart-wallet-buttons .wallet-button-fade-in{animation:animation-fade-in .3s cubic-bezier(.1,.79,1,1)}dynamic-checkout .shopify-payment-button__button,cart-wallet-buttons .shopify-payment-button__button{cursor:pointer}@keyframes animation-fade-in{0%{opacity:0}to{opacity:1}}button[aria-disabled=true]{opacity:.5;cursor:not-allowed}
</style><div class="wallet-button-fade-in"><shopify-buy-it-now-button access-token="eccfec89d9db6941381248569759a8c5" buyer-country="JP" buyer-currency="JPY" disabled="false" wallet-params="{}"><button type="button" class="shopify-payment-button__button shopify-payment-button__button--unbranded">今すぐ購入</button></shopify-buy-it-now-button></div></dynamic-checkout> </div>
</div><input type="hidden" name="product-id" value="7276839403599"><input type="hidden" name="section-id" value="template--15555335028815__main"></form>

これで、Line Item Property を用いて商品オプションを実装する方法についての解説は終了です。

最後に

ここまでで、Shopify の商品オプションを、 Line Item Property を使って実装する方法について詳しく解説しました。

少しでも皆様のお役に立てれば幸いです。

お疲れさまでした

おすすめ Shopify アプリ

シンプルブログタグ絞り込み|お手軽タグ一覧挿入のアイコン

シンプルブログタグ絞り込み|お手軽タグ一覧挿入

シンプルなブログ絞り込みアプリ。ストアにタグによるブログ絞り込み機能を簡単に導入できます。

シンプル会員商品割引|お手軽ログイン商品セール設定のアイコン

シンプル会員商品割引|お手軽ログイン商品セール設定

シンプルな日本製の商品割引アプリ。ログインしている顧客を対象とした商品割引を簡単に実現できます。

シンプルボリュームディスカウント|お手軽まとめ買い割引のアイコン

シンプルボリュームディスカウント|お手軽まとめ買い割引

商品毎に、割引テーブルに応じたまとめ買い割引を行えます。

シンプルノベルティ|お手軽ギフト特典のアイコン

シンプルノベルティ|お手軽ギフト特典

シンプルな日本製のノベルティ付与アプリ。条件を満たした注文に対してノベルティ商品を自動で付与します。シンプルな日本製のノベルティ付与アプリ。条件を満たした注文に対してノベルティ商品を自動で付与します。

シンプルおひとり様一点限りの購入制限設定のアイコン

シンプルおひとり様一点限りの購入制限設定

シンプルな日本製のおひとり様一点限りの購入制限アプリ。商品毎に、おひとり様一点限りの購入制限を行えます。

シンプル期間限定セール|お手軽バーゲンセールのアイコン

シンプル期間限定セール|お手軽バーゲンセール

「シンプル期間限定セール|お手軽バーゲンセール」は、ストアの全商品に対して期間限定セールを簡単に実現できるアプリです。

シンプルVIP会員商品割引|お手軽VIP商品セール設定のアイコン

シンプルVIP会員商品割引|お手軽VIP商品セール設定

シンプルな日本製の条件に応じた商品割引アプリ。特別な顧客を対象とした商品割引を簡単に実現できます。

シンプル決済カスタマイズ|お手軽条件ごとの決済方法のアイコン

シンプル決済カスタマイズ|お手軽条件ごとの決済方法

シンプルな日本製の決済カスタマイズアプリ。チェックアウト画面で、特定の条件に基づいて、決済方法の非表示を行えます。

シンプル配送カスタマイズ|お手軽条件ごとの配送方法のアイコン

シンプル配送カスタマイズ|お手軽条件ごとの配送方法

シンプルな日本製の配送カスタマイズアプリ。指定した条件下で特定の配送方法を非表示にできます。

シンプルクラウドファンディング|お手軽自社クラファンのアイコン

シンプルクラウドファンディング|お手軽自社クラファン

シンプルなクラウドファンディングアプリ。商品毎にクラウドファンディングを実現できます。

シンプル会員初回注文割引|お手軽初回ログインセール設定のアイコン

シンプル会員初回注文割引|お手軽初回ログインセール設定

シンプルな日本製の条件に応じた注文割引アプリ。ログインしている顧客を対象とした初回購入時の注文割引を簡単に実現できます。

シンプル顧客タグ注文割引|顧客タグ BtoB 割引のアイコン

シンプル顧客タグ注文割引|顧客タグ BtoB 割引

シンプルな日本製の注文割引アプリ。顧客タグに応じて注文を割引したり、無料にしたりできます。

シンプル会員初回送料割引|お手軽初回ログイン送料無料のアイコン

シンプル会員初回送料割引|お手軽初回ログイン送料無料

シンプルな日本製の条件に応じた送料割引アプリ。ログインしている顧客を対象とした初回購入時の配送料割引を簡単に実現できます。

シンプル会員送料割引|お手軽ログイン送料無料のアイコン

シンプル会員送料割引|お手軽ログイン送料無料

シンプルな日本製の会員配送料割引アプリ。ログイン状態に応じて配送料を割引できます。

シンプル会員注文割引|お手軽ログインセール設定のアイコン

シンプル会員注文割引|お手軽ログインセール設定

シンプルな日本製の注文割引アプリ。顧客のログイン状態に応じて注文を自動割引できる。

シンプルセット商品在庫連携|お手軽セット商品管理の自動化のアイコン

シンプルセット商品在庫連携|お手軽セット商品管理の自動化

シンプルな日本製のセット商品在庫連携アプリ。在庫連携したセット商品販売を簡単に実現できます。

シンプルVIP注文割引|お手軽VIP会員セール設定のアイコン

シンプルVIP注文割引|お手軽VIP会員セール設定

シンプルな日本製の条件に応じた注文割引アプリ。特別な顧客を対象とした注文割引を簡単に実現できます。

シンプル延長保証|お手軽保証付き商品販売のアイコン

シンプル延長保証|お手軽保証付き商品販売

シンプルな保証付与アプリ。商品毎に保証付与ができます。

シンプルVIP送料割引|お手軽VIP会員送料無料のアイコン

シンプルVIP送料割引|お手軽VIP会員送料無料

シンプルな日本製の条件に応じた送料割引アプリ。特別な顧客を対象とした配送料割引を簡単に実現できます。

シンプル追従カート|追従購入ボタン(Buy Button)のアイコン

シンプル追従カート|追従購入ボタン(Buy Button)

シンプルな追従カートアプリ。ストアに追従カートを簡単に導入できます。

シンプル顧客タグ送料割引|お手軽顧客タグ送料無料のアイコン

シンプル顧客タグ送料割引|お手軽顧客タグ送料無料

シンプルな日本製の送料割引アプリ。顧客タグに応じて配送料を割引したり、無料にしたりできます。

シンプルパンくずリスト|お手軽 Breadcrumbsのアイコン

シンプルパンくずリスト|お手軽 Breadcrumbs

カスタマイズ性の高いパンくずをストアに表示できる!

シンプルブログ記事カスタマイズ|お手軽ブログテンプレートのアイコン

シンプルブログ記事カスタマイズ|お手軽ブログテンプレート

シンプルなブログ記事カスタマイズアプリ。ストアにブログ記事カスタマイズ機能を簡単に実現できます。

シンプルお知らせ一覧|お手軽ブログ一覧挿入アプリのアイコン

シンプルお知らせ一覧|お手軽ブログ一覧挿入アプリ

シンプルなお知らせセクションアプリ。ストアにお知らせセクションを簡単に挿入できます。

シンプルブログ記事目次|自動見出し一覧挿入のアイコン

シンプルブログ記事目次|自動見出し一覧挿入

シンプルなブログ目次生成アプリ。ストアにブログ目次を簡単に表示できます。

シンプルスライドショー|お手軽画像スライダーのアイコン

シンプルスライドショー|お手軽画像スライダー

シンプルなスライドショーアプリ。ストアにスライドショーを簡単に表示できます。

シンプル流れるロゴ|流れるロゴリスト挿入アプリのアイコン

シンプル流れるロゴ|流れるロゴリスト挿入アプリ

シンプルな流れるロゴリストアプリ。ストアに流れるロゴリストを簡単に表示できます。

シンプル名入れ|お手軽名前入りギフトオプションのアイコン

シンプル名入れ|お手軽名前入りギフトオプション

シンプルな日本製の名入れオプションアプリ。商品毎に名入れオプションを追加できます。

シンプル在庫数表示|お手軽残りわずか表示のアイコン

シンプル在庫数表示|お手軽残りわずか表示

シンプルな商品の残りわずか表示アプリ。ストアに商品の残りわずか表示を簡単に導入できます。

シンプルギフトラッピング|お手軽ギフト包装アプリのアイコン

シンプルギフトラッピング|お手軽ギフト包装アプリ

シンプルな日本製のギフトラッピングアプリ。カートページに簡単にギフト包装オプションを追加できます。

シンプル購入制限|お手軽注文制限について徹底解説のアイコン

シンプル購入制限|お手軽注文制限について徹底解説

シンプルな日本製の購入数制限アプリ。商品ごとに数量の規制を行えます。

シンプルランキング表示|お手軽ベストセラーのアイコン

シンプルランキング表示|お手軽ベストセラー

購入促進!コレクションにランキングラベルを表示してストアの人気商品をアピール

シンプル顧客タグごとの限定販売|お手軽ロイヤリティのアイコン

シンプル顧客タグごとの限定販売|お手軽ロイヤリティ

日本製の顧客タグごとの購入制限アプリ。特定のタグを持つ顧客への限定販売を簡単に実現できます。

シンプルロゴ一覧|お手軽ロゴリスト表示のアイコン

シンプルロゴ一覧|お手軽ロゴリスト表示

シンプルなロゴリストアプリ。ストアにロゴリストを簡単に導入できます。

シンプル余白調整|お手軽レイアウトのアイコン

シンプル余白調整|お手軽レイアウト

シンプルな日本製の余白調整アプリ。余白を挿入することでページデザインの調整が簡単にできます。

シンプルのし(熨斗)アプリのアイコン

シンプルのし(熨斗)アプリ

シンプルな日本製のしアプリ。のし選択機能を簡単に実現できます。

シンプル画像バナー|お手軽広告バナーアプリのアイコン

シンプル画像バナー|お手軽広告バナーアプリ

シンプルな画像バナーアプリ。ストアに画像バナーを簡単に表示できます。

シンプル Q&A|どこでも FAQのアイコン

シンプル Q&A|どこでも FAQ

シンプルな Q&A アプリ。ストアに FAQ を簡単に導入できます。

シンプルモバイルアプリバナー|スマホアプリに誘導のアイコン

シンプルモバイルアプリバナー|スマホアプリに誘導

シンプルなモバイルアプリバナー。ストアにモバイルアプリバナーを簡単に導入できます。

シンプル流れる告知|流れるお知らせ挿入アプリのアイコン

シンプル流れる告知|流れるお知らせ挿入アプリ

シンプルな流れる告知アプリ。ストアに流れる告知を簡単に導入できます。

シンプル売り切れ非表示|在庫切れ商品の表示変更のアイコン

シンプル売り切れ非表示|在庫切れ商品の表示変更

売り切れ商品を非表示にすることができる日本製アプリ。売り切れになった商品を、自動的に非表示(下書き状態)にすることができます。

シンプルレビュー|お手軽口コミのアイコン

シンプルレビュー|お手軽口コミ

シンプルな日本製のレビューアプリ。レビュー機能を簡単に実現できます。

シンプル会員限定販売|お手軽アカウント必須販売のアイコン

シンプル会員限定販売|お手軽アカウント必須販売

シンプルな日本製の会員限定販売アプリ。商品毎に、ログインしていない顧客の購入制限を行えます。

シンプル会員ランク|お手軽顧客タグ付けのアイコン

シンプル会員ランク|お手軽顧客タグ付け

日本製の会員ランク管理アプリ。条件を達成した顧客に自動でタグを追加し、顧客管理を手助けします。

シンプル Wishlist|お手軽お気に入りのアイコン

シンプル Wishlist|お手軽お気に入り

商品数・お気に入り数の上限なしで使えるお手軽お気に入りアプリ。簡単にお気に入り機能を実現できます。

シンプル Coming Soon|商品ページ発売予告アプリのアイコン

シンプル Coming Soon|商品ページ発売予告アプリ

シンプルな日本製の Coming Soonアプリ。商品毎に発売予告を行えます。

シンプルセット販売|お手軽クロスセルのアイコン

シンプルセット販売|お手軽クロスセル

シンプルな日本製のセット販売アプリ。セット販売でのクロスセルを簡単に実現できます。

シンプル予約販売|受注販売や在庫切れ商品販売で使えるのアイコン

シンプル予約販売|受注販売や在庫切れ商品販売で使える

日本製の予約販売アプリ。予約販売や受注販売、在庫切れ商品販売を簡単に実現できます。

シンプル販売期間設定|商品ごとに期間限定販売のアイコン

シンプル販売期間設定|商品ごとに期間限定販売

シンプルな日本製の期間限定販売アプリ。商品ごとに販売期間を設定することができます。

シンプルVIPプログラム|お手軽VIP会員限定販売のアイコン

シンプルVIPプログラム|お手軽VIP会員限定販売

日本製の VIP 限定販売アプリ。特別な顧客を対象とした限定商品の販売を簡単に実現できます。

シンプルポイント|追加料金なしで使えるお手軽ポイントアプリのアイコン

シンプルポイント|追加料金なしで使えるお手軽ポイントアプリ

シンプルな日本製の定額ポイントアプリ。顧客はポイントをそのまま利用することができます。

おすすめ記事