content
contiene le matrici di rendering in base ai formattatori configurati.
Se si desidera accedere ai valori effettivi, si desidera accedervi tramite l'oggetto entità. Di solito, questo è già disponibile per il tuo modello, ad esempio node
. Nel tuo caso, è un po 'speciale perché il block_content è reso nel contenuto del blocco senza il suo modello, quindi devi renderlo disponibile da solo in yourtheme_preprocess_block($variables)
questo modo:
if (isset($variables['elements']['content']['#block_content'])) {
$variables['block_content'] = $variables['elements']['content']['#block_content'];
}
Quindi, è possibile accedere a un valore di campo con block_content.field_name.property
. Quindi nel tuo caso block_content.field_align.value
,. La proprietà è value
per la maggior parte dei tipi di campo, per i riferimenti, è possibile utilizzare target_id
per l'ID o entity
per l'oggetto entità referenziato. Sì, puoi accedere direttamente ai campi su questo, ma assicurati di verificare sempre l'esistenza di un riferimento, altrimenti potresti finire con errori fatali o eccezioni. Per accedere all'etichetta di un termine di riferimento, ad esempio, è possibile accedervi come block_content.field_tags.entity.name.value
.
Se non si specifica il delta di campo, il valore predefinito è il primo. Se si desidera accedere a un delta diverso, è possibile utilizzare entity.field_name.1.value
e così via. Puoi anche passare su di essi.
Tutto questo viene mappato direttamente su PHP, puoi anche farlo $block_content->field_tags->entity->name->value
in pre-elaborazione e in altri luoghi in cui hai il block_content.