You are here

public static function Ds::getFieldInstance in Display Suite 8.4

Same name and namespace in other branches
  1. 8.2 src/Ds.php \Drupal\ds\Ds::getFieldInstance()
  2. 8.3 src/Ds.php \Drupal\ds\Ds::getFieldInstance()

Gets the value for a Display Suite field.

Parameters

string $key: The key of the field.

array $field: The configuration of a DS field.

\Drupal\Core\Entity\EntityInterface $entity: The current entity.

string $view_mode: The name of the view mode.

\Drupal\Core\Entity\Display\EntityDisplayInterface $display: The entity display object.

array $build: The current built of the entity.

Return value

\Drupal\ds\Plugin\DsField\DsFieldInterface Field instance.

1 call to Ds::getFieldInstance()
ds_entity_view_alter in ./ds.module
Implements hook_entity_view_alter().

File

src/Ds.php, line 63

Class

Ds
Helper class that holds all the main Display Suite helper functions.

Namespace

Drupal\ds

Code

public static function getFieldInstance($key, array $field, EntityInterface $entity, $view_mode, EntityDisplayInterface $display, array $build = []) {
  $configuration = [
    'field' => $field,
    'field_name' => $key,
    'entity' => $entity,
    'build' => $build,
    'view_mode' => $view_mode,
  ];

  // Load the plugin.

  /* @var $field_instance \Drupal\ds\Plugin\DsField\DsFieldInterface */
  $field_instance = \Drupal::service('plugin.manager.ds')
    ->createInstance($field['plugin_id'], $configuration);

  /* @var $display \Drupal\Core\Entity\Display\EntityDisplayInterface */
  if ($field_settings = $display
    ->getThirdPartySetting('ds', 'fields')) {
    $settings = isset($field_settings[$key]['settings']) ? $field_settings[$key]['settings'] : [];

    // Unset field template settings.
    if (isset($settings['ft'])) {
      unset($settings['ft']);
    }
    $field_instance
      ->setConfiguration($settings);
  }
  return $field_instance;
}