token = $token; } /** * Wrapper for the Token module's string parsing. * * @param string $string * The string to parse. * @param array $data * Arguments for token->replace(). * @param array $options * Any additional options necessary. * @param \Drupal\Core\Render\BubbleableMetadata|null $bubbleable_metadata * (optional) An object to which static::generate() and the hooks and * functions that it invokes will add their required bubbleable metadata. * * @return mixed|string * The processed string. */ public function replace($string, array $data = [], array $options = [], BubbleableMetadata $bubbleable_metadata = NULL) { // Set default requirements for metatag unless options specify otherwise. $options = $options + [ 'clear' => TRUE, ]; $replaced = $this->token->replace($string, $data, $options, $bubbleable_metadata); // Ensure that there are no double-slash sequences due to empty token // values. $replaced = preg_replace('/(? '

' . t('Configure the meta tags below.
To view a summary of the individual meta tags and the pattern for a specific configuration, click on its name below. Use tokens to avoid redundant meta data and search engine penalization. For example, a \'keyword\' value of "example" will be shown on all content using this configuration, whereas using the [node:field_keywords] automatically inserts the "keywords" values from the current entity (node, term, etc).') . '

', ]; // Normalize taxonomy tokens. if (!empty($token_types)) { $token_types = array_map(function ($value) { return stripos($value, 'taxonomy_') === 0 ? substr($value, strlen('taxonomy_')) : $value; }, (array) $token_types); } $form['tokens'] = [ '#theme' => 'token_tree_link', '#token_types' => $token_types, '#global_types' => TRUE, '#show_nested' => FALSE, ]; return $form; } }