presto-8.x-2.2/modules/presto_components/presto_components.module

modules/presto_components/presto_components.module
<?php

/**
 * @file
 * The Presto Components module file.
 */

use Drupal\Core\Form\FormStateInterface;

/**
 * Implements theme_hook().
 */
function presto_components_theme($existing, $type, $theme, $path) {
  return [
    'paragraph__component_divider' => [
      'template' => 'paragraph--component-divider',
      'base hook' => 'paragraph',
    ],
    'paragraph__component_image' => [
      'template' => 'paragraph--component-image',
      'base hook' => 'paragraph',
    ],
    'paragraph__component_promo_bar' => [
      'template' => 'paragraph--component-promo-bar',
      'base hook' => 'paragraph',
    ],
    'paragraph__component_icon_box' => [
      'template' => 'paragraph--component-icon-box',
      'base hook' => 'paragraph',
    ],
    'paragraph__component_icon_box_list' => [
      'template' => 'paragraph--component-icon-box-list',
      'base hook' => 'paragraph',
    ],
    'paragraph__component_accordion' => [
      'template' => 'paragraph--component-accordion',
      'base hook' => 'paragraph',
    ],
    'field__paragraph__field_accordion_panel' => [
      'template' => 'field--paragraph--field-accordion-panel',
      'base hook' => 'field',
    ],
    'paragraph__component_accordion_panel' => [
      'template' => 'paragraph--component-accordion-panel',
      'base hook' => 'paragraph',
    ],
  ];
}

/**
 * Implements theme_suggestions_paragraph_alter().
 */
function presto_components_theme_suggestions_paragraph_alter(array &$suggestions, array $variables, $hook) {
  /** @var \Drupal\paragraphs\Entity\Paragraph $paragraph */
  $paragraph = $variables['elements']['#paragraph'];
  $type = $paragraph->getType();
  $suggestions[] = "paragraph__{$type}";
}

/**
 * Implements hook_form_alter().
 */
function presto_components_form_alter(
  &$form,
  FormStateInterface $form_state,
  $form_id
) {
  // Attached some JS to manage the conditional display for IconBox.
  if (isset($form['field_body_paragraphs'])) {
    $form['#attached']['library'][] = 'presto_components/iconbox_conditional_display';
  }
}

/**
 * Prepares variables for paragraph templates.
 *
 * Default template: paragraph.html.twig.
 *
 * Most themes use their own copy of paragraph.html.twig. The default is located
 * inside "templates/paragraph.html.twig". Look in there for the
 * full list of variables.
 *
 * @param array $variables
 *   An associative array containing:
 *   - elements: An array of elements to display in view mode.
 *   - paragraph: The paragraph object.
 *   - view_mode: View mode; e.g., 'full', 'teaser'...
 */
function presto_components_preprocess_paragraph(array &$variables) {
  $paragraph = $variables['elements']['#paragraph'];
  $type = $paragraph->getType();
  $id = $paragraph->id();
  $variables['paragraph_type_id'] = "{$type}_{$id}";

  if ($type === 'component_accordion_panel') {
    $parent_entity = $paragraph->getParentEntity();
    $parent_type = $parent_entity->getType();
    $parent_id = $parent_entity->id();
    $variables['parent_paragraph_type_id'] = "{$parent_type}_{$parent_id}";
  }
}

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

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