【Shopify】Liquidでランダムに何かのデータを取り出したい!でもliquidにはランダム関数がない!どうする?

person about to catch four dices liquid
Photo by lilartsy on Pexels.com
liquid Shopify

liquidにはランダム関数がない

ちょっとびっくりしたんですが、ないらしいです。ランダムフィルターみたいなものもない。

では、巷ではどのようにliquidでランダムを実現しているのか??

方法1. Github上のLiquidのみで配列をシャッフルするコードを使用する

勇敢な戦士が、liquidの”配列”の並び順をランダムで変更してくれるsnippetを公開してくれております。

使用方法は、

以下のコードを”random.liquid”というファイル名でsnippetフォルダに作成し、

このように使用したいsection内などで、関数を使うかの如くこう書く。

 {%- include 'random' with 'a,b,c,d,e' -%}

表示結果↓

a,c,b,e,d

ページをリロードするたびに並び順がランダムで変わる!

方法2. Liquidのdateフィルターで”秒”を取得して使う!

実は上記のGithubのコードでもいえるが、疑似的に乱数を発生させて利用することができる。

例えば、以下のようなコード。

{%- assign min = 0 -%}
{%- assign max = 9 -%}
{%- assign diff = max | minus: min -%}
{%- assign random_number = "now" | date: "%N" | modulo: diff | plus: min -%}

{{ random_number }}

なかなかシンプルにいかないLiquid。。

別のページでも書きましたが、liquidは四則演算もフィルターという「出力形式」を利用して行うので、

プログラミング言語としてなかなかクセがあります。。

余談ですが、単純に配列の変数を宣言するだけでも以下のようなコード。

<!--▼配列を宣言-->
{% assign parts_tags = "t-shirts, tanktop, long-t-shirts, jacket, shorts, pants, socks, mask, pack, tops, bottoms, accessary" | split: ", " %}
<!--▲配列を宣言-->

<h2>before</h2>
<!--▼もとの配列を出力(出力するためにjoinフィルターで一度テキストに整形)-->
{% assign parts_tags_array = parts_tags | join: ', ' %}
{{ parts_tags_array }}

<h2>after</h2>
<!--▼シャッフルした配列をGithubのsnioppetで出力(こちらは出力までやってくれる)-->
{%- include 'random' with parts_tags_array -%}

下手か!w

Webサイト制作を依頼したい方へ

PRYTHM WORKS(プリズムワークス)は、東京都墨田区、東京スカイツリーのふもとにあるWebコンテンツ制作事務所です。

華々しいおしゃれなECサイトをはじめ、アンダーグラウンドな案件まで幅広くご依頼をいただき、どんな案件でも真心・丁寧・楽しくを理念に掲げて制作しております!

作りたいサービスはあるけど、まずは費用感が知りたい!という方も、まずはお問い合わせください!

mail@prytymworks.tokyo

PRYTHM WORKSが手掛ける仕事の一部をご紹介します。

制作のご依頼者様用 費用かんたんお見積もりフォーム

おそらく本記事を読まれるのは、制作の現場の、法人またはフリーの、プロデューサーの方、ディレクターの方、エンジニアの方がほとんどかと存じます。
いつもおつかれさまです!そして本記事をお読みいただきありがとうございます。
紹介した記事の内容について、またはその他制作のご依頼について、以下のフォームより簡易お見積もりができます!
試算だけならフォーム送信しなくてもできますので、ぜひ試しにいかがでしょう?

お仕事をご希望の制作者様用 お問合せフォーム

また、まずはライトなご相談から…ということであれば、こちらのコンタクトフォームからお気軽にどうぞ!ご縁を大切にしてご返信いたします!

    タイトルとURLをコピーしました