Quiero representar el campo de un nodo dentro de un bloque. Funciona así:
<?php
if ($node) {
if (isset($node->field_body_secondary) && $field = $node->field_body_secondary->value) {
$markup = render($field);
$build = array(
'#type' => 'markup',
'#markup' => $markup,
);
}
}
return $build;
Pero esto no es 100% como si simplemente renderizara el campo normalmente, haciéndolo visible en la configuración del modo de vista.

$nodeviewtiene#nodecomo clavePara representar un solo campo con la configuración de visualización de un modo de vista, puede usar el
view()método del campo:Ejemplo para representar la imagen en formato teaser:
O el cuerpo completo:
fuente
['label' => 'inline' ]$vars['var_name'] = $node_object->field_name->view()[0];y luego en twig, puedo renderizar {{var_name}}Esta respuesta se basa en https://drupal.stackexchange.com/a/208061/394
Para procesar completamente el campo que finaliza llamando
renderRoot(), lo que establece un contexto de procesamiento separado del que usarían las respuestas de página típicas: un contexto de procesamiento único para una solicitud o sub-solicitud. También podríamos usarrenderPlain(), pero luego se nos escaparía todoEn la respuesta Drush pero no en la ejecución normal de la página, esto me lanzó una advertencia:
fuente
relacionado con la respuesta de Alex , así es como lo modifiqué para usar config_pages y construir un bloque global_footer:
Probablemente sea mejor representar campos arbitrarios desde una configuración config_pages en lugar de extraer datos de un nodo, pero supongo que realmente depende del caso de uso específico en cuanto a qué método es el mejor.
fuente
Gracias a la respuesta de Rainer Feike, llegué a la solución:
Utilizando
$viewBuilder->viewFieldpuedo representar cualquier campo por separado que necesito. Solo necesito saber cómo agregar el almacenamiento en caché dependiendo de la configuración del modo de vista, pero esta es otra pregunta :)fuente