liên quan đến câu trả lời của Alex , đây là cách tôi sửa đổi nó để sử dụng config_pages và xây dựng khối global_footer:
<?php
public function build() {
$config_name = 'global_footer';
$config = config_pages_config($config_name);
$build = array();
$markup = array();
$fieldsToRender = array(
'field_body', 'field_foo', 'field_bar'
);
$viewmode = 'default';
$entityType = 'config_pages';
$display = entity_get_display($entityType, $config_name, $viewmode);
$viewBuilder = \Drupal::entityTypeManager()->getViewBuilder($entityType);
foreach ($fieldsToRender as $field_name) {
if (isset($config->{$field_name}) && $field = $config->{$field_name}) {
$fieldRenderable = $viewBuilder->viewField($field, $display->getComponent($field_name));
if (count($fieldRenderable) &&! empty($fieldRenderable)) {
$markup[] = \Drupal::service('renderer')->renderRoot($fieldRenderable);
}
}
}
if (count($markup)) {
$build = array(
'#type' => 'markup',
'#markup' => implode("", $markup),
);
}
return $build;
}
Có lẽ tốt hơn để hiển thị các trường tùy ý từ thiết lập config_pages thay vì kéo dữ liệu từ một nút, nhưng tôi đoán nó thực sự phụ thuộc vào trường hợp sử dụng cụ thể như phương pháp nào là tốt nhất.
$nodeview
có#node
chìa khóa