field_menu-8.x-1.0-alpha4/field_menu.module

field_menu.module
<?php

/**
 * @file
 * A menu tree field using the Field Types API.
 */

use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Entity\EntityBase;

/**
 * Implements hook_help().
 */
function field_menu_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    case 'help.page.field_menu':
      $readme = __DIR__ . '/README.txt';
      $text = file_get_contents($readme);
      $output = '';

      // If the Markdown module is installed, use it to render the README.
      if ($text && \Drupal::moduleHandler()->moduleExists('markdown') === TRUE) {
        $filter_manager = \Drupal::service('plugin.manager.filter');
        $settings = \Drupal::configFactory()->get('markdown.settings')->getRawData();
        $config = ['settings' => $settings];
        $filter = $filter_manager->createInstance('markdown', $config);
        $output = $filter->process($text, 'en');
      }
      // Else the Markdown module is not installed output the README as text.
      elseif ($text) {
        $output = '<pre>' . $text . '</pre>';
      }

      // Add a link to the Drupal.org project.
      $output .= '<p>';
      $output .= t('Visit the <a href=":project_link">Field Menu project page</a> on Drupal.org for more information.',
        [
          ':project_link' => 'https://www.drupal.org/project/field_menu',
        ]
      );
      $output .= '</p>';

      return $output;
  }
}

/**
 * Implements hook_theme().
 */
function field_menu_theme() {
  return [
    'field_menu_item' => [
      'variables' => [
        'title' => NULL,
        'tree' => NULL,
      ],
    ],
  ];
}

/**
 * Implements hook_theme_registry_alter().
 */
function field_menu_theme_registry_alter(&$theme_registry) {
  // Add $field_menu_configuration as a variable to the 'menu' theme hook. Set
  // its default value to be an empty array.
  $theme_registry['menu']['variables']['field_menu_configuration'] = [];
}

/**
 * Implements hook_theme_suggestions_HOOK() for "menu".
 */
function field_menu_theme_suggestions_menu(array $variables) {
  $suggestions = [];
  // The MenuTreeFormatter plugin's viewElements() method populates
  // this variable.
  if (!empty($variables['field_menu_configuration'])) {
    $menu_name = strtr($variables['menu_name'], '-', '_');
    $suggestions[] = 'menu__' . $menu_name;
    $suggestions[] = 'field_menu__menu';
    $suggestions[] = 'field_menu__menu__' . $menu_name;
    // Add our custom theme suggestion.
    $config = $variables['field_menu_configuration'];
    if (!empty($config['suggestion']) && $config['suggestion'] !== $menu_name) {
      $suggestions[] = 'field_menu__menu';
      $suggestions[] = 'field_menu__menu__' . $menu_name;
    }
    if (!empty($config['providing_entity']) && $config['providing_entity'] instanceof EntityBase) {
      $entity = $config['providing_entity'];
      $type = $entity->getEntityTypeId();
      $bundle = $entity->bundle();
      $suggestions[] = 'menu__' . $type . '__field_menu';
      $suggestions[] = 'menu__' . $type . '__field_menu__' . $menu_name;
      $suggestions[] = 'menu__' . $type . '__' . $bundle . '__field_menu';
      $suggestions[] = 'menu__' . $type . '__' . $bundle . '__field_menu__' . $menu_name;
      if (!empty($config['view_mode'])) {
        $view_mode = $config['view_mode'];
        $suggestions[] = 'menu__' . $type . '__' . $bundle . '__' . $view_mode . '__field_menu';
        $suggestions[] = 'menu__' . $type . '__' . $bundle . '__' . $view_mode . '__field_menu__' . $menu_name;
      }
    }
  }
  return $suggestions;
}

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

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