🤖

Drupalでフィールド単位で公開・非公開を設定する

2024/08/16に公開

概要

Omeka Sではフィールド単位で公開・非公開を設定することができます。これをDrupalで実現する方法のメモです。

インストール

composer.phar require 'drupal/field_permissions:^1.4'
./vendor/bin/drush en field_permissions

設定

以下のような、あるコンテンツタイプのあるフィールドの編集画面に遷移します。

/admin/structure/types/manage/bib_1/fields/node.bib_1.field_003_permission_number

以下に示すように、フィールドの可視性を設定することができます。

プログラムによるアクセス

以下のように、access関数を使って、フィールドのビュー権限をチェックすることができました。

// ログインユーザーのアカウントを取得
    $current_user = \Drupal::currentUser();

    $fieldDefinitions = \Drupal::service('entity_field.manager')->getFieldDefinitions('node', $nodeType);

    foreach ($fieldDefinitions as $fieldName => $definition) {


      $field = $nodeEntity->get($fieldName);
        
      // フィールドのビュー権限をチェック
      if (!$field->access('view', $current_user)) {
        continue;
      }
        ...

まとめ

よりよい方法があるかもしれませんが、Drupalでフィールド単位での公開・非公開にあたり、参考になりましたら幸いです。

Discussion