syn_promo-8.x-1.3/syn_promo.module

syn_promo.module
<?php

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Entity\ContentEntityInterface;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\block\Entity\Block;
/**
 * @file
 * Primary module hooks for promo module.
 */


/**
 *
 * @return void
 */
function syn_promo_theme() {
  return [
    'promo_block' => [
      'template' => 'promo_block',
      'variables' => ['data' => []],
    ],
  ];
}

/**
 * Sets the default value for the alignment field.
 *
 */
function syn_promo_allowed_target_types_list(FieldStorageConfig $definition, ContentEntityInterface $entity = NULL, $cacheable) {
  $options = [];
  $node_bundles_info = \Drupal::service('entity_type.bundle.info')->getBundleInfo('node');
  foreach ($node_bundles_info as $bundle => $info) {
    if ($bundle != 'promo') {
      $options['node_' . $bundle] = $info['label'];
    }
  }
  $taxonomy_bundles_info = \Drupal::service('entity_type.bundle.info')->getBundleInfo('taxonomy_term');
  foreach ($taxonomy_bundles_info as $bundle => $info) {
    $options['term_' . $bundle] = $info['label'];
  }
  return $options;
}

/**
 * Hook page preprocess.
 *
 * @param array &$variables
 */
function syn_promo_preprocess_page(&$variables) {
  $block = Block::load('promo');
  if (is_object($block)) {
    $build = $block->getPlugin()->build();
    if (isset($build['#data']['nodes']) && count($build['#data']['nodes'])) {
      $view = \Drupal::entityTypeManager()
        ->getViewBuilder('block')
        ->view($block);
        $variables['promo'] = $view;
    }
  }
}

/**
 *
 * @param mixed &$form
 * @param FormStateInterface $form_state
 * @param mixed $form_id
 * @return void
 */
function syn_promo_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) : void{
  if ($form_id == 'node_syn_promo_edit_form' ||  $form_id == 'node_syn_promo_form') {
    $form['field_promo_button']['widget'][0]['subform']['field_title']['#attributes']['class'][] = 'hidden';
    $form['field_promo_target_node']['#states'] = [
      'visible' => [
        ':input[name="field_promo_visibility"]' => ['value' => 'node'],
      ],
    ];
    $form['field_promo_target_type']['#states'] = [
      'visible' => [
        ':input[name="field_promo_visibility"]' => ['value' => 'type'],
      ],
    ];
    $form['field_promo_target_term']['#states'] = [
      'visible' => [
        ':input[name="field_promo_visibility"]' => ['value' => 'term'],
      ],
    ];
    $form['field_promo_target_product']['#states'] = [
      'visible' => [
        ':input[name="field_promo_visibility"]' => ['value' => 'product'],
      ],
    ];
  }
}

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

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