🤖
Drupalでフィールド単位で公開・非公開を設定する
概要
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