Skip to content
Snippets Groups Projects

Draft: Resolve #3506444 "Any page with"

1 unresolved thread
1 file
+ 19
2
Compare changes
  • Side-by-side
  • Inline
@@ -325,9 +325,26 @@ function template_preprocess_node(&$variables): void {
// $variables['content'] is more flexible and consistent.
$submitted_configurable = $node->getFieldDefinition('created')->isDisplayConfigurable('view') || $node->getFieldDefinition('uid')->isDisplayConfigurable('view');
if (!$skip_custom_preprocessing || !$submitted_configurable) {
$variables['date'] = \Drupal::service('renderer')->render($variables['elements']['created']);
$renderer = \Drupal::service('renderer');
$variables['date'] = $renderer->render($variables['elements']['created']);
unset($variables['elements']['created']);
$variables['author_name'] = \Drupal::service('renderer')->render($variables['elements']['uid']);
// @todo The todo above still remains true and we should get rid of the
// author name preprocessing in favor of being able to configure these
// base fields on the view display. But for the time being we manually
// call a formatter so that the author name access check works.
$field_definition = Node::baseFieldDefinitions(\Drupal::entityTypeManager()->getDefinition('node'))['uid'];
$field_formatter_manager = \Drupal::service('plugin.manager.field.formatter');
$formatter = $field_formatter_manager->getInstance([
'configuration' => [
'type' => 'entity_reference_label',
'settings' => ['link' => FALSE],
],
'field_definition' => $field_definition,
'view_mode' => $variables['view_mode'],
]);
$author_name = $formatter->viewElements($node->get('uid'), $node->language()->getId());
$variables['author_name'] = $renderer->render($author_name);
    • Comment on lines +356 to +367

      I think this can be simplified a bit since FieldItemListInterface has view() method (untested):

      Suggested change
      356 $field_definition = Node::baseFieldDefinitions(\Drupal::entityTypeManager()->getDefinition('node'))['uid'];
      357 $field_formatter_manager = \Drupal::service('plugin.manager.field.formatter');
      358 $formatter = $field_formatter_manager->getInstance([
      359 'configuration' => [
      360 'type' => 'entity_reference_label',
      361 'settings' => ['link' => FALSE],
      362 ],
      363 'field_definition' => $field_definition,
      364 'view_mode' => $variables['view_mode'],
      365 ]);
      366 $author_name = $formatter->viewElements($node->get('uid'), $node->language()->getId());
      367 $variables['author_name'] = $renderer->render($author_name);
      356 $author_name = $node->get('uid')->view([
      357 'label' => 'hidden',
      358 'type' => 'entity_reference_label',
      359 'settings' => ['link' => FALSE],
      360 ]);
      361 $variables['author_name'] = $renderer->render($author_name);
Please register or sign in to reply
unset($variables['elements']['uid']);
}
Loading