Craft CMS でエントリが特定のカテゴリに属しているかチェックする
2019-09-10
2分で読了
更新: 2025-12-14
目次
前提条件は下記のとおりです。
entry変数にエントリの情報が入っている- カテゴリのカテゴリグループハンドルは
category - エントリでカテゴリを紐付けるフィールドのハンドルは
categories
この条件下で、例えばエントリが 「Craft」というカテゴリに属しているかを調べる場合は下記のような Twig テンプレートを書きます。
{% set hasCategory = craft.categories.group('category').title('Craft').relatedTo({
sourceElement: entry,
field: 'categories'
}).exists() %}
{% if hasCategory %} ... {% endif %}
これを下記のようにマクロにしておけば、
{% macro hasCategories(entry, categoryTitleArray) %}
{{- craft.categories.group('category').title(categoryTitleArray).relatedTo({
sourceElement: entry,
field: 'categories'
}).exists() -}}
{% endmacro %}そのページでマクロを読み込んでおいて、
{% import '_macros/common.twig' as macro %}下記のように使えて便利です。
{% if macro.hasCategory(entry, 'Craft') %} ... {% endif %}複数のカテゴリのいずれかに属するかをまとめてチェックしたいときは、
{% if macro.hasCategory(entry, ['Craft', 'Twig']) %} ... {% endif %}のようにして使えます。
以上です。