class ExternalHreflang in External Hreflang 8
A new hreflang tag will be made available for each language.
The meta tag's values will be based upon this annotation.
Plugin annotation
@MetatagTag(
id = "hreflang_external",
label = @Translation("External Hreflang"),
description = @Translation("This plugin will be cloned from these settings for each enabled language."),
name = "hreflang_external",
group = "advanced",
weight = 10,
type = "string",
secure = FALSE,
multiple = TRUE
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\metatag\Plugin\metatag\Tag\MetaNameBase uses StringTranslationTrait
- class \Drupal\metatag\Plugin\metatag\Tag\LinkRelBase
- class \Drupal\external_hreflang\Plugin\metatag\Tag\ExternalHreflang
- class \Drupal\metatag\Plugin\metatag\Tag\LinkRelBase
- class \Drupal\metatag\Plugin\metatag\Tag\MetaNameBase uses StringTranslationTrait
Expanded class hierarchy of ExternalHreflang
1 file declares its use of ExternalHreflang
- external_hreflang.module in ./
external_hreflang.module - Module file.
File
- src/
Plugin/ metatag/ Tag/ ExternalHreflang.php, line 25
Namespace
Drupal\external_hreflang\Plugin\metatag\TagView source
class ExternalHreflang extends LinkRelBase {
/**
* {@inheritdoc}
*/
public function output() {
$elements = [];
try {
$value = $this
->value() ?? '';
$hreflangs = self::getHrefLangsArrayFromString($value);
} catch (\Exception $e) {
\Drupal::logger('ExternalHreflang')
->warning($this
->t('Invalid value found in hreflang_external metatag.'));
}
foreach ($hreflangs ?? [] as $hreflang => $link) {
$element = [];
$element['#tag'] = 'link';
$element['#attributes'] = [
'rel' => 'alternate',
'hreflang' => $hreflang,
'href' => $link,
];
$elements[] = $element;
}
return $elements;
}
/**
* {@inheritdoc}
*/
public function name() {
return 'hreflang';
}
/**
* {@inheritdoc}
*/
public function form(array $element = []) {
$form = [
'#type' => 'textarea',
'#title' => $this
->label(),
'#default_value' => $this
->value(),
'#required' => isset($element['#required']) ? $element['#required'] : FALSE,
'#description' => $this
->description(),
'#element_validate' => [
[
get_class($this),
'validateTag',
],
],
];
return $form;
}
/**
* {@inheritdoc}
*/
public function description() {
return $this
->t('Enter one link per hreflang, each separated by pipe (|) for code and url. Example: en-us|https://us.site.com/en[current-page:url:relative:en]');
}
/**
* {@inheritdoc}
*/
public static function validateTag(array &$element, FormStateInterface $form_state) {
$value = $form_state
->getValue($element['#parents']) ?? '';
try {
self::getHrefLangsArrayFromString($value);
} catch (\Exception $e) {
$form_state
->setError($element, t('Invalid value in @name', [
'@name' => $element['#title'],
]));
}
}
/**
* Convert string data from metatag to href langs array.
*
* @param string $value
* Value.
*
* @return array
* Array of Href Langs.
*
* @throws \Exception
*/
public static function getHrefLangsArrayFromString(string $value = '') {
$hreflangs = [];
// Do nothing if empty.
if (empty($value)) {
return $hreflangs;
}
// Ensure we always have PHP_EOL as line separator.
$value = str_replace("\r\n", PHP_EOL, $value);
// Explode lines to get one array item per link.
$value = array_filter(explode(PHP_EOL, $value));
if (!is_array($value) || count($value) == 0) {
throw new \Exception('Invalid value');
}
foreach ($value as $hreflang) {
$hreflang = array_filter(explode('|', $hreflang));
if (count($hreflang) !== 2) {
throw new \Exception('Invalid value');
}
$hreflangs[$hreflang[0]] = $hreflang[1];
}
return $hreflangs;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ExternalHreflang:: |
public | function |
The meta tag's description. Overrides MetaNameBase:: |
|
ExternalHreflang:: |
public | function |
Generate a form element for this meta tag. Overrides MetaNameBase:: |
|
ExternalHreflang:: |
public static | function | Convert string data from metatag to href langs array. | |
ExternalHreflang:: |
public | function |
The meta tag's machine name. Overrides MetaNameBase:: |
|
ExternalHreflang:: |
public | function |
Generate the HTML tag output for a meta tag. Overrides LinkRelBase:: |
|
ExternalHreflang:: |
public static | function |
Validates the metatag data. Overrides MetaNameBase:: |
|
MetaNameBase:: |
protected | property | True if the URL value(s) must be absolute. | |
MetaNameBase:: |
protected | property | A longer explanation of what the field is for. | |
MetaNameBase:: |
protected | property | The category this meta tag fits in. | |
MetaNameBase:: |
protected | property | Machine name of the meta tag plugin. | |
MetaNameBase:: |
protected | property | The title of the plugin. | |
MetaNameBase:: |
protected | property | True if the tag should use a text area. | |
MetaNameBase:: |
protected | property | True if more than one is allowed. | |
MetaNameBase:: |
protected | property | Official metatag name. | 1 |
MetaNameBase:: |
protected | property | The attribute this tag uses for the name. | 3 |
MetaNameBase:: |
protected | property | Retrieves the currently active request object. | |
MetaNameBase:: |
protected | property | True if URL must use HTTPS. | |
MetaNameBase:: |
protected | property | Type of the value being stored. | |
MetaNameBase:: |
protected | property | The value of the metatag in this instance. | |
MetaNameBase:: |
public | function | The meta tag group this meta tag belongs to. | |
MetaNameBase:: |
public | function | Obtain the meta tag's internal ID. | |
MetaNameBase:: |
public | function | Whether or not this meta tag is active. | |
MetaNameBase:: |
public | function | Whether or not this meta tag should use a text area. | |
MetaNameBase:: |
public | function | This meta tag's label. | |
MetaNameBase:: |
public | function | Whether or not this meta tag supports multiple values. | |
MetaNameBase:: |
protected | function | Extract any image URLs that might be found in a meta tag. | |
MetaNameBase:: |
public | function | Whether or not this meta tag must output required absolute URLs. | |
MetaNameBase:: |
public | function | Whether or not this meta tag must output secure (HTTPS) URLs. | |
MetaNameBase:: |
public | function | Assign the current meta tag a value. | 1 |
MetaNameBase:: |
private | function | Make the string presentable. | |
MetaNameBase:: |
public | function | Obtain this meta tag's type. | |
MetaNameBase:: |
public | function | Obtain the current meta tag's raw value. | |
MetaNameBase:: |
public | function | This meta tag's form field's weight. | |
MetaNameBase:: |
public | function |
Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase:: |
|
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |