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
идентификатор, либо entity
объект ссылочной сущности. Да, вы можете напрямую обращаться к этим полям, но всегда проверяйте, существует ли ссылка, иначе вы можете получить фатальные ошибки или исключения. Например, чтобы получить доступ к метке ссылки на термин, вы можете получить к ней доступ как block_content.field_tags.entity.name.value
.
Если вы не укажете поле delta, по умолчанию оно будет первым. Если вы хотите получить доступ к другой дельте, вы можете использовать entity.field_name.1.value
и так далее. Вы также можете зациклить их.
Все это отображается непосредственно в PHP, вы также можете сделать это $block_content->field_tags->entity->name->value
в preprocess и других местах, где у вас есть block_content.