diff --git a/targets.module b/targets.module index b261da7b7a6e79daf4646e38f5841854cf66a79d..1cd33c088f610b8efb7fe41db7cc858feb38b2c4 100644 --- a/targets.module +++ b/targets.module @@ -146,6 +146,20 @@ function targets_views_data_alter(&$data) { function targets_token_info() { $info = []; + $info['types']['target'] = [ + 'name' => t('Current Target'), + 'description' => t('Tokens for information related to the current target.'), + ]; + $info['tokens']['target']['machine_name'] = [ + 'type' => 'text', + 'name' => t('Machine name'), + 'description' => t('The machine name of the current target.'), + ]; + $info['tokens']['target']['name'] = [ + 'type' => 'text', + 'name' => t('Name'), + 'description' => t('The name of the current target.'), + ]; $info['types']['targets'] = [ 'name' => t('Targets'), 'description' => t('Target specific tokens'), @@ -213,6 +227,26 @@ function targets_tokens($type, $tokens, array $data, array $options, BubbleableM } } + if ($type === 'target') { + /** @var \Drupal\targets\TargetManagerInterface $target_manager */ + $target_manager = \Drupal::service('targets.manager'); + if ($target = $target_manager->getCurrentTarget()) { + foreach ($tokens as $name => $original) { + switch ($name) { + case 'machine_name': + $bubbleable_metadata->addCacheableDependency($target); + $return[$original] = $target->id(); + break; + + case 'name': + $bubbleable_metadata->addCacheableDependency($target); + $return[$original] = $target->label(); + break; + } + } + } + } + if ($type === 'targets') { $storage = \Drupal::entityTypeManager()->getStorage('target'); $targets = $storage->loadMultiple();