content
設定されたフォーマッタに基づいたレンダー配列が含まれます。
実際の値にアクセスする場合は、エンティティオブジェクトを介してアクセスします。通常、これは、たとえばテンプレートですでに使用可能ですnode
。あなたの場合、block_contentは独自のテンプレートなしでブロックコンテンツにレンダリングされるため、少し特別です。次のように自分で利用可能にする必要がありますyourtheme_preprocess_block($variables)
。
if (isset($variables['elements']['content']['#block_content'])) {
$variables['block_content'] = $variables['elements']['content']['#block_content'];
}
次に、を使用してフィールド値にアクセスできますblock_content.field_name.property
。だからあなたの場合、block_content.field_align.value
。このプロパティはvalue
、ほとんどのフィールドタイプ、参照、target_id
IDまたはentity
参照されたエンティティオブジェクトに使用できます。はい、そのフィールドに直接アクセスできますが、参照が存在することを常に確認してください。そうしないと、致命的なエラーまたは例外が発生する可能性があります。たとえば、用語参照のラベルにアクセスするには、としてアクセスできますblock_content.field_tags.entity.name.value
。
フィールドデルタを指定しない場合、デフォルトで最初になります。別のデルタにアクセスする場合は、などを使用できますentity.field_name.1.value
。ループすることもできます。
これはすべてPHPに直接マップされます$block_content->field_tags->entity->name->value
。block_contentがあるプリプロセスやその他の場所でも実行できます。