terkait dengan jawaban Alex , berikut adalah cara saya memodifikasinya untuk menggunakan config_pages dan membangun blok 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;
}
Mungkin lebih baik untuk membuat bidang arbitrer dari pengaturan config_pages sebagai lawan untuk menarik data dari sebuah node, tapi saya kira itu benar-benar tergantung pada use-case spesifik mengenai metode mana yang terbaik.
$nodeview
memiliki#node
sebagai kunci