degov-8.x-2.0/modules/degov_media_gallery/degov_media_gallery.module

modules/degov_media_gallery/degov_media_gallery.module
<?php

/**
 * @file
 * Contains hooks and custom functionds for the degov_media_gallery module.
 */

use Drupal\degov_common\Common;
use Drupal\media\Entity\Media;

/**
 * Implements hook_preprocess().
 */
function degov_media_gallery_preprocess(&$variables, $hook, &$info)
{
  // Add template suggestions and libraries implemented in this module.
  Common::addThemeSuggestions($variables, $hook, $info, [
    'module_name'       => 'degov_media_gallery',
    'entity_type'       => 'media',
    'entity_bundles'    => ['gallery'],
    'entity_view_modes' => [
      'usage',
      'preview',
      'search',
      'embedded',
      'reference',
    ],
  ]);
}

/**
 * Implements hook_preprocess_media().
 */
function degov_media_gallery_preprocess_media(&$variables)
{
  /** @var \Drupal\media\Entity\Media $media */
  $media = $variables['elements']['#media'];
  if ($media->bundle() === 'gallery') {
    /** @var \Drupal\Core\Entity\Entity\EntityViewDisplay $display */
    $display = \Drupal::entityTypeManager()
      ->getStorage('entity_view_display')
      ->load('media.gallery.default');
    $component = $display->getComponent('field_gallery_images');
    $component['settings']['view_mode'] = 'teaser_squared_1_1';
    $variables['content']['preview'] = $media->get('field_gallery_images')->view($component);
    $variables['content']['totalImages'] = $media->get('field_gallery_images')->count();
    /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $item */
    foreach ($media->get('field_gallery_images') as $item) {
      $media = Media::load($item->getValue('id')['target_id']);
      $uri = $item->entity->image->get(0)->entity->uri->value;

      $fieldAllowDownload = NULL;
      if (!empty($mediaFirstValue = $media->get('field_allow_download')->first())) {
        $fieldAllowDownload = $mediaFirstValue->getValue()['value'];
      }

      $variables['#attached']['drupalSettings']['degov_media_gallery']['imagesDownloadLinks'][] = [
        'uri'                  => file_create_url($uri),
        'width'                => $item->entity->image->get(0)->width,
        'height'               => $item->entity->image->get(0)->height,
        'field_allow_download' => $fieldAllowDownload,
      ];
    }

    $media_current = $variables['elements']['#media'];
    $variables['gallery_url'] = $media_current->url();
  }
}

/**
 * Implements hook_preprocess_type().
 */
function degov_media_gallery_preprocess_media__gallery(&$variables)
{
  $variables['created'] = $variables['elements']['#media']->created->value;
}

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

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