Twig テンプレートでファイル拡張子を取得する

これは Craft CMS Advent Calendar 2020 5日目の記事です。

Craft CMS の アセット エレメントには、ファイルの種別を表す kind プロパティが存在します。
この分類は公式ドキュメントに記載されている通りで、実際のファイル拡張子とは異なります。

そこで、Twig フィルタを利用して簡単にファイル拡張子を取得する方法をご紹介します。

やってみる

変数 asset に単一のアセットがセットされている状態だとして、次のコードを記述します。

{{ asset.url | split('.') | last }}

asset.url | split('.') でアセットの URL を . で配列に分割し last フィルタで最後の要素を取得することで、結果的にファイル拡張子だけを抜き出すことができます。

first フィルタで配列の最初の要素も取得できますので、用途に応じて使い分けてみてください。

参考:配列のN番目の要素を取得するには

split フィルタで分割した配列を slice フィルタで範囲指定します。

{% set pathArray = craft.app.request.fullPath | split('/') %}

{% for value in pathArray | slice(2, 1) %}
  {% set targetSegment = value %}
{% endfor %}

このとき、for タグでループさせないとエラーになる点だけ注意が必要です。