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);
      }
    }
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc