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'],
],
];
}
}
