![見出し画像](https://assets.st-note.com/production/uploads/images/111970952/rectangle_large_type_2_a18ed1138fc49be9b9410fe7c4cafc7b.png?width=1200)
[Shopify]メタオブジェクトとメタフィールドを使って各商品にアレルギー項目のテーブルを作ってみる(Dawn)98/100
こんにちは。Shopify専門エンジニアのまりん(@crowd37cord)です。
今日はアレルギー項目の表を作成してみます。メタオブジェクトにマスターの項目(卵、牛乳などなど)を登録しておいて、商品のメタフィールドでメタオブジェクトを呼び出して、各商品で対象の項目を選択するとその商品のページのアレルギー表示の対象項目の背景が赤色に選択されているというブロックを作ってみました^^
サイズ表などにも応用できるのでぜひ試してみてください🎵
検証テーマ:Dawn
Dawn以外のテーマでもCSSは崩れると思いますがコードの書き方は使えます。
✔️今回のゴール
商品ページにアレルギーの表を表示させて、各商品毎に対象項目の背景カラーを赤色に変更。
![](https://assets.st-note.com/img/1690591305807-HWZgocO4Sp.png?width=1200)
メタフィールドで何も選択されていない場合は、このブロックは非表示になります。
🔸CMSの特徴
![](https://assets.st-note.com/img/1690588134328-e8PV69tHLD.png?width=1200)
![](https://assets.st-note.com/img/1690591242391-Awv5dKgH3l.png?width=1200)
説明文
注意事項
対象項目の背景カラー
🔸メタオブジェクトとメタフィールドの連携
メタオブジェクトでは下記のタイプとキーを作成
タイプ:single
キー:item
メタフィールドは下記のネームスペースとキーを作成
ネーム:custom
キー:chart
→product.metafields.custom.chartという定義を作成しました
💡メタオブジェクトをテーマで表示させる場合は下記のコードを使用します。
{% for my_metaobject in shop.metaobjects["single"].values %}
<div class="grid_item">{{ my_metaobject.item }}</div>
{% endfor %}
shop.metaobjects["ここにタイプ名"].values
💡メタオブジェクトを連携させたメタフィールドを表示させる場合は下記のコードを使用します。
{% assign myfields = product.metafields.custom.chart.value %}
{% for myfield in myfields %}
<p>{{ myfield.item }}</p>
{% endfor %}
下記でメタオブジェクトのitemを表示
{{ myfield.item }}
✔️設置手順
Step1 メタオブジェクト&メタフィールドの設定
❶管理画面>設定>カスタムデータ>メタオブジェクト>定義を追加
![](https://assets.st-note.com/img/1690588391311-kk95S6DDtb.png?width=1200)
❷ネームとタイプを入力
![](https://assets.st-note.com/img/1690588630419-qrTKUvzQn7.png?width=1200)
編集をクリックするとタイプ名を編集できます。
![](https://assets.st-note.com/img/1690589010531-EvfAZ0tIIM.png?width=1200)
ネーム:なんでもOK
タイプ:single
→ここもなんでもOKです。今回はsingleというタイプ名にしてみました。
❸フィールドを追加>単一行のテキスト
![](https://assets.st-note.com/img/1690588879460-fFY21fvx8O.png?width=1200)
![](https://assets.st-note.com/img/1690589048756-S6kI4cZ3WQ.png?width=1200)
名前:なんでもOK
キー:item
値:1つの値
※その他の項目は空欄でもOKです。
![](https://assets.st-note.com/img/1690589224585-38BmhGGF6e.png?width=1200)
![](https://assets.st-note.com/img/1690589230201-EZBLSP4ON5.png?width=1200)
最後に保存。
❹コンテンツ>メタオブジェクト>先ほど作成したメタオブジェクトを選択
![](https://assets.st-note.com/img/1690589345673-5B8ajErikL.png?width=1200)
🔸右上の「エントリーを追加」ボタンをクリックして各アレルギー名を一つずつ登録していく。
![](https://assets.st-note.com/img/1690589396156-fn4LhJuZCd.png?width=1200)
![](https://assets.st-note.com/img/1690589425159-eI4DZxGvHy.png?width=1200)
![](https://assets.st-note.com/img/1690589508167-3WWWKNS8Oj.png?width=1200)
追加できたら再度カスタムデータに戻り、メタオブジェクトと商品メタフィールドを紐づけます。
❺設定>カスタムデータ>商品
![](https://assets.st-note.com/img/1690589799698-rgYF5UZaxz.png?width=1200)
![](https://assets.st-note.com/img/1690589874076-xZbPWu4QkM.png?width=1200)
![](https://assets.st-note.com/img/1690590031420-7I9ZTHn94H.png?width=1200)
![](https://assets.st-note.com/img/1690589997497-QEVlBg4rvC.png?width=1200)
![](https://assets.st-note.com/img/1690590072967-n5U3XIFDRt.png?width=1200)
名前:なんでもOK
ネームスペースとキー:custom.chart
コンテンツタイプ:メタオブジェクト
リファレンス:単一テキスト
エントリー:リスト
これで各商品のメタフィールドでメタオブジェクトを選択できるようになりました!!
商品ページのメタフィールドを確認すると、先ほど登録したメタフィールドが表示されて、エントリー選択からアレルギー項目を選択できるようになりました🎵
![](https://assets.st-note.com/img/1690590230002-rNYDsJGGLX.png?width=1200)
![](https://assets.st-note.com/img/1690590207482-pTVrnGtxe7.png?width=1200)
次は、テーマを編集していきます。商品詳細のブロックにアレルギー表示を追加して、メタオブジェクトの項目をすべて表示したテーブルを表示させて、さらに各商品ページで選択したアレルギー項目のみ背景を赤に変更します。
【ご注意】
※返金&サポート&コメント返信はしておりません。
※最新のDawnテーマ対象です。
※コードのみのご紹介で解説などはしておりません。
※2023.7時点のコードです。メンテナンスは今後する予定はありません。
※環境やバージョンによりレイアウト崩れることもありますので適当にCSSで調整していただければと思います。(メンバーシップでコメント頂いた場合は修正します)
ここから先は
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?