カスタムフィールドを使用して、コレクションページにブログ記事を抽出し、ループ表示したい

コレクションページに、

カスタムフィールドを使用して、フィールドの文字列(値)からタイトルや本文から該当するブログ記事を抽出し、ループ表示したいです。

可能でしたらコードをご教示いただけないでしょうか。

①コレクションページにカスタムフィールドを設定

②カスタムフィールドの値から該当するブログを取得

③取得するのはタイトル・画像

よろしくお願いいたします。

@sesami-n

シンプルな実装ですが、下記ではいかがでしょうか?

{% 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の部分です。

ご参考まで。

(キュー田辺)

1 Like

株式会社Q

田辺様

ご親切にご教示いただきまして、ありがとうございます。

お陰様で近いところまで実装ができました。

こちらはやはり日本語によるキーワードでの取得は難しいのでしょうか?

@sesami-n

失礼いたしました。

フィールドの文字列(値)からタイトルや本文から該当するブログ記事を抽出

お伝えした方法ではこちらが実現できていませんでしたね。

そうですね、、、動作検証はしていないのですが、例えば、下記のようにされると良いかもしれません。

{% 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」に設定した文言を、

タイトルか本文に含む記事のみが表示されるかと思います。

ご参考まで。

(キュー田辺)