BreadcrumbList.php in Schema.org Metatag 8.2
File
src/Plugin/schema_metatag/PropertyType/BreadcrumbList.php
View source
<?php
namespace Drupal\schema_metatag\Plugin\schema_metatag\PropertyType;
use Drupal\Core\Url;
class BreadcrumbList extends ItemListElement {
public function form($input_values) {
$value = $input_values['value'];
$form = [
'#type' => 'select',
'#title' => $input_values['title'],
'#description' => $input_values['description'],
'#default_value' => !empty($value) ? $value : '',
'#maxlength' => 255,
'#empty_option' => $this
->t('No'),
'#empty_value' => '',
'#options' => [
'Yes' => $this
->t('Yes'),
],
];
return $form;
}
public function testValue($type = '') {
return 'Yes';
}
public function outputValue($input_value) {
$output_value = parent::outputValue($input_value);
$items = [];
if (!empty($output_value)) {
$items = [
"@type" => "BreadcrumbList",
"itemListElement" => $output_value,
];
}
return $items;
}
public function getItems($input_value) {
$values = [];
if (!empty($input_value)) {
$entity_route = \Drupal::service('current_route_match')
->getCurrentRouteMatch();
$breadcrumbs = \Drupal::service('breadcrumb')
->build($entity_route)
->getLinks();
$key = 1;
foreach ($breadcrumbs as $item) {
$url = $item
->getUrl()
->setAbsolute()
->toString();
if (empty($url)) {
$url = Url::fromRoute('<current>')
->setAbsolute()
->toString();
}
$text = $item
->getText();
$text = is_object($text) ? $text
->render() : $text;
$values[$key] = [
'@id' => $url,
'name' => $text,
'item' => $url,
];
$key++;
}
}
return $values;
}
}
Classes
Name |
Description |
BreadcrumbList |
Provides a plugin for the 'ItemListElement' Schema.org property type. |