metatags_quick-4.0.x-dev/metatags_quick.views.inc
metatags_quick.views.inc
<?php
/**
* @file
*/
use Drupal\field\Entity\FieldConfig;
use Drupal\views\ViewExecutable;
/**
* @file
* Views include file for metatags_quick.
*/
/**
* Implements hook_views_post_render().
*/
/**
* Performs actions after rendering a views display.
*
* @param \Drupal\views\ViewExecutable $view
* The view object.
* @param string $output
* The rendered output.
* @param array $cache
* The cache information.
*/
function mymodule_views_post_render(ViewExecutable $view, &$output, array $cache) {
// If the view is a page display, has a path, and it is a taxonomy term path.
if ($view->getDisplay()->getPluginId() === 'page' && $view->getDisplay()->getOption('path') === 'taxonomy/term/%') {
$args = $view->args;
$term = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($args[0]);
$fields = \Drupal::service('entity_field.manager')->getFieldDefinitions('taxonomy_term', $term->bundle());
foreach ($fields as $name => $field) {
/** @var \Drupal\Core\Field\FieldConfigInterface $instance */
$instance = FieldConfig::loadByName('taxonomy_term', $term->bundle(), $name);
$settings = $instance->getSetting('display');
// Check for fields which use this module for display, and render them.
if ($settings['module'] === 'metatags_quick') {
$fieldRendered = \Drupal::service('entity_field.manager')->getViewBuilder('taxonomy_term')
->viewField($term->{$name}, [
'label' => 'hidden',
'type' => 'metatags_quick',
'settings' => $settings,
]);
$renderer = \Drupal::service('renderer');
$output .= $renderer->render($fieldRendered);
}
}
}
}
