block_generation-8.x-1.x-dev/modules/block/block_generation_block.module

modules/block/block_generation_block.module
<?php

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
use Drupal\block_content\Entity\BlockContent;

/**
 * Tune up the form.
 *
 * Implements hook_form_FORM_ID_alter().
 *
 * @param $form
 * @param \Drupal\Core\Form\FormStateInterface $form_state
 */
function _block_generation_block_form_alter(&$form, FormStateInterface $form_state) {
  // External wrapper.
  $form['wrapper_external_tag']['#states'] = ['visible' => [':input[name="wrapper_external[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_external_attr']['#states'] = ['visible' => [':input[name="wrapper_external[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_external_effects']['#states'] = ['visible' => [':input[name="wrapper_external[value]"]' => ['checked' => TRUE]]];
  // Main wrapper.
  $form['wrapper_main_tag']['#states'] = ['visible' => [':input[name="wrapper_main[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_main_attr']['#states'] = ['visible' => [':input[name="wrapper_main[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_main_effects']['#states'] = ['visible' => [':input[name="wrapper_main[value]"]' => ['checked' => TRUE]]];
  // Internal wrapper.
  $form['wrapper_internal_tag']['#states'] = ['visible' => [':input[name="wrapper_internal[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_internal_attr']['#states'] = ['visible' => [':input[name="wrapper_internal[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_internal_effects']['#states'] = ['visible' => [':input[name="wrapper_internal[value]"]' => ['checked' => TRUE]]];
  // Inner wrapper.
  $form['wrapper_inner_tag']['#states'] = ['visible' => [':input[name="wrapper_inner[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_inner_attr']['#states'] = ['visible' => [':input[name="wrapper_inner[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_inner_effects']['#states'] = ['visible' => [':input[name="wrapper_inner[value]"]' => ['checked' => TRUE]]];
  // Title wrapper.
  $form['wrapper_title_tag']['#states'] = ['visible' => [':input[name="wrapper_title[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_title_attr']['#states'] = ['visible' => [':input[name="wrapper_title[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_title_effects']['#states'] = ['visible' => [':input[name="wrapper_title[value]"]' => ['checked' => TRUE]]];
  // Block wrapper.
  $form['wrapper_block_tag']['#states'] = ['visible' => [':input[name="wrapper_block[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_block_attr']['#states'] = ['visible' => [':input[name="wrapper_block[value]"]' => ['checked' => TRUE]]];
  $form['wrapper_block_effects']['#states'] = ['visible' => [':input[name="wrapper_block[value]"]' => ['checked' => TRUE]]];
}

/**
 * Implements hook_form_FORM_ID_alter().
 *
 * @param $form
 * @param \Drupal\Core\Form\FormStateInterface $form_state
 */
function block_generation_block_form_block_content_block_generation_block_edit_form_alter(&$form, FormStateInterface $form_state) {
  _block_generation_block_form_alter($form, $form_state);
}

/**
 * Implements hook_form_FORM_ID_alter().
 *
 * @param $form
 * @param \Drupal\Core\Form\FormStateInterface $form_state
 */
function block_generation_block_form_block_content_block_generation_block_form_alter(&$form, FormStateInterface $form_state) {
  _block_generation_block_form_alter($form, $form_state);
}

/**
 * Implements hook_ENTITY_TYPE_view_alter().
 *
 * @param array $build
 * @param \Drupal\Core\Entity\EntityInterface $entity
 * @param \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display
 */
function block_generation_block_block_content_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
  $block_generation_bundles = _block_generation_bundles();
  if ($entity instanceof BlockContent && $entity->bundle() == 'block_generation_block') {
    /** @var \Drupal\Core\Utility\ThemeRegistry $theme_registry */
    $theme_registry = \Drupal::service('theme.registry')->getRuntime();

    // Update the theme for specific fields.
    if (isset($build['block']['#object']) && $theme_registry->has('field__block_generation__block_generation_block__block')) {
      $build['block']['#theme'] = 'field__block_generation__block_generation_block__block';
    }
  }
}

/**
 * Process block content settings.
 * Implements hook_preprocess_HOOK().
 *
 * @param array $variables
 */
function template_preprocess_block__block_generation__block_generation_block(array &$variables) {
  if (isset($variables['elements']['#block_content']) && $variables['elements']['#block_content'] instanceof BlockContent) {
    // Block content object.
    /** @var \Drupal\block_content\Entity\BlockContent $block */
    $block = $variables['elements']['#block_content'];

    // Process possible wrappers.
    $wrappers = ['wrapper_external', 'wrapper_main', 'wrapper_internal', 'wrapper_inner', 'wrapper_title', 'wrapper_block'];
    foreach ($wrappers as $wrapper) {
      _block_generation_process_wrapper($wrapper, $block, $variables);
    }

    // Content composition.
    $content_composition = ['title', 'block'];
    _block_generation_process_content($block, $variables, $content_composition);
    _block_generation_process_order($block, $variables, $content_composition);
  }
}

/**
 * Process block content settings.
 * Implements hook_preprocess_HOOK().
 *
 * @param array $variables
 */
function template_preprocess_field__block_generation__block_generation_block__block(array &$variables) {
  // Process fields.
  _block_generation_process_field_attributes('block', $variables);
}

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

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