Liquid、JavaScriptなどに関する質問
テーマ「Dawn」を使用しています。
商品ページのテンプレート「テキスト付き画像」を使って、レイアウトしているのですが、PC版のみ画像が荒れてしまいます。
と言いますのも、どうやらモバイル版画像に自動リサイズされてしまっているようです。
元サイズ→1744px:940px
リサイズサイズ→750px:404px
PC版では元サイズの写真を使用したいのですが、方法はありますでしょうか?
もしくはPC版、モバイル版、どちらも元画像を使用する設定でも構いません。
お分かりになる方がいたら幸いです。
よろしくお願いいたします。
解決済! ベストソリューションを見る。
成功
興味があり調査してみました。
Dawnのバージョンにより異なるかもしれませんが、
「テキスト付き画像」の画像は、
下記のように、imgのsrcsetで制御されているようです。
<img src="hoge.jpg?v=1682928686&width=1500" alt="" srcset="hoge.jpg?v=1682928686&width=165 165w, hoge.jpg?v=1682928686&width=360 360w, hoge.jpg?v=1682928686&width=535 535w, hoge.jpg?v=1682928686&width=750 750w, hoge.jpg?v=1682928686&width=1070 1070w, hoge.jpg?v=1682928686&width=1500 1500w" width="1500" height="741" loading="lazy" sizes="(min-width: 1200px) 550px,
(min-width: 750px) calc((100vw - 130px) / 2), calc((100vw - 50px) / 2)">
簡単に申しますと、
画面の幅(厳密にはviewportの幅)に応じて表示する画像を変更する、
ということをしています。
質問者様の場合、750px幅の画像が表示されているとのことなので、
質問者様の画面のviewportの幅が750px以下であることを示しています。
さて、
なぜこのようになっているかというと、
画面幅に応じて適切なサイズの画像を読み込ませることで、
ページ表示スピードを良くする、という意図があるためです。
しかし、
状況によってはページの表示スピードより、
画像のクオリティを優先したい場合があるかもしれませんね。
雑なやり方になってしまいますが、
一番簡単な解決方法は
「テキスト付き画像」のimgからsrcsetを削除してしまう、ことです。
(どのような画面幅においても最大サイズの画像が読み込まれてしまいますが、
解決方法としてはこれが最も簡単だと思います。)
ストア管理画面 > オンラインストア > テーマ > コード編集
から、
セクション(sections)のimage-with-text.liquidを編集します。
(Dawnのバージョンによってコードや行数が異なる可能性があります。)
40行目付近の下記を、
{{
section.settings.image
| image_url: width: 1500
| image_tag: loading: 'lazy', sizes: sizes, widths: widths
}}
↓ 下記のように変更します。
{{
section.settings.image
| image_url: width: 1500
| image_tag: loading: 'lazy', sizes: sizes, widths: widths, srcset: nil
}}
これで、srcsetが出力されなくなります。
なお、幅1500が最大で設定されているので、
上記のコードの、width: 1500をご希望の数値に変更することで最大幅を変更することもできます。
ご参考まで。
(キュー田辺)
成功
興味があり調査してみました。
Dawnのバージョンにより異なるかもしれませんが、
「テキスト付き画像」の画像は、
下記のように、imgのsrcsetで制御されているようです。
<img src="hoge.jpg?v=1682928686&width=1500" alt="" srcset="hoge.jpg?v=1682928686&width=165 165w, hoge.jpg?v=1682928686&width=360 360w, hoge.jpg?v=1682928686&width=535 535w, hoge.jpg?v=1682928686&width=750 750w, hoge.jpg?v=1682928686&width=1070 1070w, hoge.jpg?v=1682928686&width=1500 1500w" width="1500" height="741" loading="lazy" sizes="(min-width: 1200px) 550px,
(min-width: 750px) calc((100vw - 130px) / 2), calc((100vw - 50px) / 2)">
簡単に申しますと、
画面の幅(厳密にはviewportの幅)に応じて表示する画像を変更する、
ということをしています。
質問者様の場合、750px幅の画像が表示されているとのことなので、
質問者様の画面のviewportの幅が750px以下であることを示しています。
さて、
なぜこのようになっているかというと、
画面幅に応じて適切なサイズの画像を読み込ませることで、
ページ表示スピードを良くする、という意図があるためです。
しかし、
状況によってはページの表示スピードより、
画像のクオリティを優先したい場合があるかもしれませんね。
雑なやり方になってしまいますが、
一番簡単な解決方法は
「テキスト付き画像」のimgからsrcsetを削除してしまう、ことです。
(どのような画面幅においても最大サイズの画像が読み込まれてしまいますが、
解決方法としてはこれが最も簡単だと思います。)
ストア管理画面 > オンラインストア > テーマ > コード編集
から、
セクション(sections)のimage-with-text.liquidを編集します。
(Dawnのバージョンによってコードや行数が異なる可能性があります。)
40行目付近の下記を、
{{
section.settings.image
| image_url: width: 1500
| image_tag: loading: 'lazy', sizes: sizes, widths: widths
}}
↓ 下記のように変更します。
{{
section.settings.image
| image_url: width: 1500
| image_tag: loading: 'lazy', sizes: sizes, widths: widths, srcset: nil
}}
これで、srcsetが出力されなくなります。
なお、幅1500が最大で設定されているので、
上記のコードの、width: 1500をご希望の数値に変更することで最大幅を変更することもできます。
ご参考まで。
(キュー田辺)
素晴らしいご回答をありがとうございます。
ひとまずこれで対処できそうです。
ありがとうございます。
いつもShopifyをご利用いただき、ありがとうございます。 Shopifyは、皆様の日本語での利用体験の向上に努めております。さらなる改善のために皆様のご意見をお寄せい...
By JasonH May 9, 2025Shopify アカデミーの学習パスと認定スキルバッジExpanding Your Shopify Business Internationallyを活用して、国際的にビジネ...
By Shopify Feb 7, 2025Shopify アカデミーの学習パスB2B on Shopify:立ち上げとカスタマイズで卸売販売に進出しましょう。これら3つの無料コースは、ShopifyストアでB2B機能...
By Shopify Jan 31, 2025