コレクションページに、
カスタムフィールドを使用して、フィールドの文字列(値)からタイトルや本文から該当するブログ記事を抽出し、ループ表示したいです。
可能でしたらコードをご教示いただけないでしょうか。
①コレクションページにカスタムフィールドを設定
②カスタムフィールドの値から該当するブログを取得
③取得するのはタイトル・画像
よろしくお願いいたします。
コレクションページに、
カスタムフィールドを使用して、フィールドの文字列(値)からタイトルや本文から該当するブログ記事を抽出し、ループ表示したいです。
可能でしたらコードをご教示いただけないでしょうか。
①コレクションページにカスタムフィールドを設定
②カスタムフィールドの値から該当するブログを取得
③取得するのはタイトル・画像
よろしくお願いいたします。
シンプルな実装ですが、下記ではいかがでしょうか?
{% if collection.metafields.custom.blog_handle != blank %}
{% if blogs[collection.metafields.custom.blog_handle].articles_count > 0 %}
{%- for article in blogs[collection.metafields.custom.blog_handle].articles -%}
- ### {{ article.title }}
{% if article.image != blank %}
{{ article | image_url: width: 200 | image_tag }}
{% endif %}
{%- endfor -%}
{% endif %}
{% endif %}
collectionに設定するメタフィールドが、custom.blog_handleで、blogのhandleを指定することを想定しています。
※ handleは、ブログのURLの、xxxx.myshopify.com/blogs/yyyy の yyyyの部分です。
ご参考まで。
(キュー田辺)
株式会社Q
田辺様
ご親切にご教示いただきまして、ありがとうございます。
お陰様で近いところまで実装ができました。
こちらはやはり日本語によるキーワードでの取得は難しいのでしょうか?
失礼いたしました。
フィールドの文字列(値)からタイトルや本文から該当するブログ記事を抽出
お伝えした方法ではこちらが実現できていませんでしたね。
そうですね、、、動作検証はしていないのですが、例えば、下記のようにされると良いかもしれません。
{% if collection.metafields.custom.blog_handle != blank %}
{% if blogs[collection.metafields.custom.blog_handle].articles_count > 0 %}
{%- for article in blogs[collection.metafields.custom.blog_handle].articles -%}
{%- if article.title contains collection.metafields.custom.keyword or article.content contains collection.metafields.custom.keyword -%}
- ### {{ article.title }}
{% if article.image != blank %}
{{ article | image_url: width: 200 | image_tag }}
{% endif %}
{%- endif -%}
{%- endfor -%}
{% endif %}
{% endif %}
期待通りに動作すれば、
コレクションのメタフィールド「custom.keyword」に設定した文言を、
タイトルか本文に含む記事のみが表示されるかと思います。
ご参考まで。
(キュー田辺)