function metatag_page_manager_page_attachments in Metatag 8
Implements hook_page_attachments().
File
- metatag_page_manager/
metatag_page_manager.module, line 24 - Contains metatag_page_manager.module.
Code
function metatag_page_manager_page_attachments(array &$attachments) {
// Fetch entity from request.
$entity = \Drupal::request()->attributes
->get('_entity');
if ($entity) {
$key = $entity
->getEntityType()
->id() . '__' . $entity
->id();
// Get default metatags.
$metatag_defaults = metatag_get_default_tags();
// Load page variant metatags.
$metatag_variant = MetatagDefaults::load($key);
if ($metatag_variant) {
// Overwrite the metatag defaults with the tags of the page variant.
$metatag_defaults = array_merge($metatag_defaults, $metatag_variant
->get('tags'));
// Set the metatag in the static metatag attachments parameter so the
// metatag module wouldn't overwrite them.
$metatag_attachments =& drupal_static('metatag_attachments');
$metatag_manager = \Drupal::service('metatag.manager');
$metatag_attachments = $metatag_manager
->generateElements($metatag_defaults, $entity);
// If any Metatag items were found, append them.
if (!empty($metatag_attachments['#attached']['html_head'])) {
if (empty($attachments['#attached'])) {
$attachments['#attached'] = [];
}
if (empty($attachments['#attached']['html_head'])) {
$attachments['#attached']['html_head'] = [];
}
foreach ($metatag_attachments['#attached']['html_head'] as $item) {
$attachments['#attached']['html_head'][] = $item;
}
}
}
}
}