function views_field_formatter_tokens in Views field formatter 8.2
Implements hook_tokens().
File
- ./
views_field_formatter.module, line 123
Code
function views_field_formatter_tokens($type, $tokens, array $data = [], array $options = []) {
$replacements = [];
if (!isset($data['views_field_formatter'])) {
return [];
}
// @var \Drupal\Core\Entity\ContentEntityInterface $entity
$entity = $data['entity'];
if (!$entity instanceof ContentEntityInterface) {
return $replacements;
}
foreach ($tokens as $name => $original) {
// Do not continue if the $name doesn't contains a semicolon.
if (\strpos($name, ':') === FALSE) {
continue;
}
// Do not continue if the field is empty.
if ($data['views_field_formatter']['items']
->isEmpty()) {
continue;
}
list(, $delta) = \explode(':', $name, 2);
// Do not continue if $delta is null.
if ($delta === NULL) {
continue;
}
// Handle [entity:field_name:delta].
if ($delta === 'delta') {
$replacements[$original] = $data['views_field_formatter']['delta'];
}
// Handle [entity:field_name:current].
if ($delta === 'current') {
if ($field_delta = $data['views_field_formatter']['items'][$data['views_field_formatter']['delta']]) {
$field_output = $field_delta
->view();
$replacements[$original] = \Drupal::service('renderer')
->renderPlain($field_output);
}
}
// Handle [entity:field_name:concat:*].
if (\strpos($delta, 'concat:') === 0) {
list($third_part, $fourth_part) = \explode(':', $delta, 2);
if ($third_part === 'concat' && $fourth_part !== NULL) {
$field_pieces = [];
foreach ($data['views_field_formatter']['items'] as $item) {
$item = $item
->view();
$field_pieces[] = \Drupal::service('renderer')
->renderPlain($item);
}
$replacements[$original] = \implode($fourth_part, $field_pieces);
}
}
}
return $replacements;
}