varbase_media_header-9.0.0-alpha1/varbase_media_header.module

varbase_media_header.module
<?php

/**
 * @file
 * Contains varbase_media_header.module.
 */

use Drupal\node\NodeInterface;
use Drupal\taxonomy\TermInterface;
use Drupal\Core\Form\FormStateInterface;

// Include all helpers.
include_once __DIR__ . '/includes/helpers.inc';

/**
 * Implements hook_form_FORM_ID_alter().
 */
function varbase_media_header_form_node_form_alter(&$form, FormStateInterface $form_state, $form_id) {

  $vmh_settings = \Drupal::config('varbase_media_header.settings')->get('varbase_media_header_settings');

  $bundles = \Drupal::service('entity_type.bundle.info')->getBundleInfo('node');

  foreach ($bundles as $bundle_key => $bundle) {
    if (!empty($vmh_settings['node']) && isset($vmh_settings['node'][$bundle_key]) && $vmh_settings['node'][$bundle_key]) {

      if ($form_id == 'node_' . $bundle_key . '_edit_form'
        || $form_id == 'node_' . $bundle_key . '_form') {
        varbase_media_header__node_group_form($form, $form_state, $form_id);
      }
    }
  }
}

/**
 * Implements hook_form_FORM_ID_alter().
 */
function varbase_media_header_form_taxonomy_term_form_alter(&$form, FormStateInterface $form_state, $form_id) {

  $vmh_settings = \Drupal::config('varbase_media_header.settings')->get('varbase_media_header_settings');

  $bundles = \Drupal::service('entity_type.bundle.info')->getBundleInfo('taxonomy_term');

  foreach ($bundles as $bundle_key => $bundle) {
    if (!empty($vmh_settings['taxonomy_term']) && isset($vmh_settings['taxonomy_term'][$bundle_key]) && $vmh_settings['taxonomy_term'][$bundle_key]) {

      if ($form_id == 'taxonomy_term_' . $bundle_key . '_edit_form'
        || $form_id == 'taxonomy_term_' . $bundle_key . '_form') {
        varbase_media_header__taxonomy_term_group_form($form, $form_state, $form_id);
      }
    }
  }
}

/**
 * Implements hook_preprocess_block().
 */
function varbase_media_header_preprocess_block(&$variables) {

  $active_theme = \Drupal::config('system.theme')->get('default');
  $current_theme = \Drupal::theme()->getActiveTheme()->getName();
  if (($variables['plugin_id'] == 'page_title_block'
      || $variables['plugin_id'] == 'system_breadcrumb_block')
      && $active_theme == $current_theme) {

    $entity = FALSE;
    $entity_type = FALSE;

    $node = new stdClass();
    $route_name = \Drupal::routeMatch()->getRouteName();
    if ($route_name == 'entity.node.canonical') {
      $node = \Drupal::routeMatch()->getParameter('node');
    }
    elseif ($route_name == 'entity.node.latest_version') {
      $latest_version_node = \Drupal::routeMatch()->getParameter('node');
      /** @var \Drupal\Core\Entity\RevisionableStorageInterface $storage */
      $storage = \Drupal::entityTypeManager()->getStorage('node');
      $last_revision_id = $storage->getLatestRevisionId($latest_version_node->id());
      $node = $storage->loadRevision($last_revision_id);
    }
    elseif ($route_name == 'entity.node.preview'
      && \Drupal::routeMatch()->getParameter('view_mode_id') == 'full') {
      $node = \Drupal::routeMatch()->getParameter('node_preview');
    }

    if ($node instanceof NodeInterface && isset($node)) {
      $entity = $node;
      $entity_type = $entity->getEntityType()->id();
    }
    else {
      $taxonomy = \Drupal::routeMatch()->getParameter('taxonomy_term');
      if ($taxonomy instanceof TermInterface && isset($taxonomy)) {
        $entity = $taxonomy;
        $entity_type = $entity->getEntityType()->id();
      }
    }

    if ($entity_type != FALSE) {
      $vmh_settings = \Drupal::config('varbase_media_header.settings')->get('varbase_media_header_settings');
      if (!empty($vmh_settings[$entity_type])
        && isset($vmh_settings[$entity_type][$entity->bundle()])
        && $vmh_settings[$entity_type][$entity->bundle()]
        && $entity->hasField('field_page_header_style')
        && !$entity->get('field_page_header_style')->isEmpty()
        && $entity->get('field_page_header_style')->value != 'standard') {

        $vmh_hide_breadcrumbs = \Drupal::config('varbase_media_header.settings')->get('hide_breadcrumbs');

        if ($variables['plugin_id'] == 'system_breadcrumb_block'
          && isset($vmh_hide_breadcrumbs)
          && $vmh_hide_breadcrumbs == FALSE) {
          $variables['content'] = '';
        }
        elseif ($variables['plugin_id'] == 'page_title_block') {
          $variables['content'] = '';
        }
      }
      $variables['#cache']['contexts'] = array_merge(
        $variables['#cache']['contexts'] ?? [],
        [
          'route',
          'url',
          'url.path',
          'url.path.parent',
          'url.path.is_front',
          'languages:language_interface',
          'theme',
        ]
      );
    }

  }

}

/**
 * Implements hook_theme().
 */
function varbase_media_header_theme($existing, $type, $theme, $path) {

  return [
    'varbase_media_header_block' => [
      'variables' => [
        'title' => 'Varbase Media Header',
        'description' => NULL,
        'vmh_page_title' => NULL,
        'vmh_page_breadcrumbs' => NULL,
        'vmh_background_media' => NULL,
        'vmh_media_type' => NULL,
        'provider' => NULL,
      ],
    ],
    'media_oembed_iframe__remote_video__varbase_media_header' => [
      'template' => 'media-oembed-iframe--remote-video--varbase-media-header',
      'variables' => [
        'provider' => NULL,
        'media' => NULL,
      ],
    ],
  ];
}

/**
 * Implements hook_preprocess_HOOK().
 */
function varbase_media_header_preprocess_media_oembed_iframe__remote_video__varbase_media_header(&$variables) {
  // Suggestions go here!
  $module_handler = \Drupal::service('module_handler');
  $query = \Drupal::request()->query;
  $variables['type'] = $query->get('type');
  $variables['provider'] = $query->get('provider');
  $variables['view_mode'] = $query->get('view_mode');
  $variables['base_path'] = base_path();
  $variables['varbase_media_header_path'] = $module_handler->getModule('varbase_media_header')->getPath();

}

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

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