見出し画像

コレクションリストページだけにnoindexタグを設定したい

こんにちはフラクタRI局シェルパチームの橋本です。

社内サポートでお問い合わせをいただいた内容を解説したいと思います。
修正案のソースコードはフラクタのチョコおじこと森田が考えてくれました!

お問い合わせ内容

コレクションリストページにnoindexタグを設定したい。
自分でif文を書いてみたがうまく動作しないので見てほしい。

▼書いてみたif文

{% if handle contains 'collections'%}
  <meta name="robots" content="noindex">
{% endif %}

というもの。
書いてみたif文を見てみると一見問題なさそうに見えますが、なぜ正しく動作しないのでしょうか?

ポイント

Liquidのhandleで呼び出せる内容は、下記の例だと末尾の「frontpage」の部分です。

https://xxx.myshopify.com/collections/frontpage

そのため、今回の実現したいことはコレクションリストページが対象なのでhandleでは該当しないことになります。

【補足】コレクションリストページのURL

https://xxx.myshopify.com/collections

▼handleについて

そして、Liquidでのcontainsは比較演算子として「含む」という意味合いで使用します。
そのため、containsを使用するとURLにcollectionsが含まれているページすべてが対象となってしまいます。(つまりは、コレクションページすべてが対象となってしまいます。)

▼比較演算子について

ポイントを踏まえた上の、修正案

{%- assign req = request.path | split:'/' | last -%}
{% if req == 'collections' %}
  <meta name="robots" content="noindex">
{% endif %}

解説

{%- assign req = request.path | split:'/' | last -%}

request.pathで現在アクセスしているページのURLを取得する。
出力例:[ /collections/classics/products/chambray-shirt ]となるので、
[ split:'/' ]で[ / (スラッシュ)]を区切り文字とし、分割する。
[ last ]で分割した要素の最後に当たる[ chambray-shirt ]を[ req ]に[ assign ]するという処理をしています。

{% if req == 'collections' %}

そして、条件分岐で[ req ]が[ collections ]と等しければif文の中を通過し、等しくない場合には通過しないという処理をしています。

▼request.pathtについて

▼splitについて

おまけの補足

metaタグなので設置するファイルはtheme.liquidの<head>タグ内です!

今回ご紹介した内容は、特定のページを判断したい場合に応用できる処理なのでぜひご活用くださいませ!

フラクタでは、ブランディングやEコマースに関する情報を発信しています。ぜひフォロー、スキをお願いいたします!


この記事が気に入ったらサポートをしてみませんか?