この実装、面倒なら代行します
ShopifyのLiquidテンプレートファイルは、表示側を制御するテンプレート部と入力側を制御するschema部の2部構成になっているというお話を、以前ご説明しました。
そういうことなので、画像を4つ登録できる「コンテンツ」を管理画面に追加し、「コンテンツ」に登録した画像をimage-barとしてフッターメニューの上部に並べて表示させようとするときも、テンプレート部とschema部の両方を追加で記述する必要があります。
それでは修正していきましょう。
【テーマ:Debut】ではsections/footer.liquidがフッター部のテンプレートなのでそれを修正します。
まずschema部。
「blocks」を検索してその末尾に次のように4画像入力用のコンテンツを追加します。
{% schema %} { "blocks": [ { "type": "image", "name": "ImageBar", "settings": [ { "type": "image_picker", "id": "image1", "label": "画像1" }, { "type": "image_picker", "id": "image2", "label": "画像2" }, { "type": "image_picker", "id": "image3", "label": "画像3" }, { "type": "image_picker", "id": "image4", "label": "画像4" } ] } ] } {% endschema %}
次に表示テンプレート部では、表示させたい場所でblockをfor文で回し、blockタイプが”image”の”image1″,”image2″,”image3″,”image4″の値を取得してテンプレートに出力します。
{%- for block in section.blocks -%} {%- case block.type -%} {%- when 'image' -%} <div id="loopslider" class="grid grid--no-gutters image-bar image-bar--small footer-image-bar"> {%- assign column_size = 'medium-up--one-quarter' -%} <div class="loopslider_child"> <div class="grid__item {{ column_size }} js"> <div class="image-bar__item image-bar__item--{{ block.id }} box ratio-container lazyload" data-bgset="{% include 'bgset', image: block.settings.image1 %}" data-sizes="auto" data-parent-fit="cover" style="background-position: center center; background-image: url('{{ block.settings.image1 | img_url: '300x300' }});"> </div> </div> <noscript> <div class="grid__item {{ column_size }}"> <div class="image-bar__item image-bar__item--{{ block.id }}" style="background-image: url({{ block.settings.image1 | img_url: '2048x' }});"></div> </div> </noscript> </div> <div class="loopslider_child"> <div class="grid__item {{ column_size }} js"> <div class="image-bar__item image-bar__item--{{ block.id }} box ratio-container lazyload" data-bgset="{% include 'bgset', image: block.settings.image2 %}" data-sizes="auto" data-parent-fit="cover" style="background-position: center center; background-image: url('{{ block.settings.image2 | img_url: '300x300' }});"> </div> </div> <noscript> <div class="grid__item {{ column_size }}"> <div class="image-bar__item image-bar__item--{{ block.id }}" style="background-image: url({{ block.settings.image2 | img_url: '2048x' }});"></div> </div> </noscript> </div> <div class="loopslider_child"> <div class="grid__item {{ column_size }} js"> <div class="image-bar__item image-bar__item--{{ block.id }} box ratio-container lazyload" data-bgset="{% include 'bgset', image: block.settings.image3 %}" data-sizes="auto" data-parent-fit="cover" style="background-position: center center; background-image: url('{{ block.settings.image3 | img_url: '300x300' }});"> </div> </div> <noscript> <div class="grid__item {{ column_size }}"> <div class="image-bar__item image-bar__item--{{ block.id }}" style="background-image: url({{ block.settings.image3 | img_url: '2048x' }});"></div> </div> </noscript> </div> <div class="loopslider_child"> <div class="grid__item {{ column_size }} js"> <div class="image-bar__item image-bar__item--{{ block.id }} box ratio-container lazyload" data-bgset="{% include 'bgset', image: block.settings.image4 %}" data-sizes="auto" data-parent-fit="cover" style="background-position: center center; background-image: url('{{ block.settings.image4 | img_url: '300x300' }});"> </div> </div> <noscript> <div class="grid__item {{ column_size }}"> <div class="image-bar__item image-bar__item--{{ block.id }}" style="background-image: url({{ block.settings.image4 | img_url: '2048x' }});"></div> </div> </noscript> </div> </div> {% if section.blocks.size == 0 %} {% include 'no-blocks' %} {% endif %} {%- endcase -%} {%- endfor -%}
これで、テーマカスタマイズ画面のフッターブロックに「ImageBar」というコンテンツが追加され、「ImageBar」で登録した画像4つがフッター部に表示されるようになります。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。