commerce-8.x-2.8/commerce.module

commerce.module
<?php

/**
 * @file
 * Defines common functionality for all Commerce modules.
 */

use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element;

/**
 * Implements hook_toolbar_alter().
 */
function commerce_toolbar_alter(&$items) {
  $items['administration']['#attached']['library'][] = 'commerce/toolbar';
}

/**
 * Implements hook_field_widget_info_alter().
 *
 * Exposes the commerce_plugin_item widgets for each of the field type's
 * derivatives, since core does not do it automatically.
 */
function commerce_field_widget_info_alter(array &$info) {
  foreach (['commerce_plugin_select', 'commerce_plugin_radios'] as $widget) {
    if (isset($info[$widget])) {
      $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
      foreach ($field_type_manager->getDefinitions() as $key => $definition) {
        if ($definition['id'] == 'commerce_plugin_item') {
          $info[$widget]['field_types'][] = $key;
        }
      }
    }
  }
}

/**
 * Implements hook_field_formatter_info_alter().
 *
 * Exposes the commerce_plugin_item_default formatter for each of the field
 * type's derivatives, since core does not do it automatically.
 */
function commerce_field_formatter_info_alter(array &$info) {
  if (isset($info['commerce_plugin_item_default'])) {
    $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
    foreach ($field_type_manager->getDefinitions() as $key => $definition) {
      if ($definition['id'] == 'commerce_plugin_item') {
        $info['commerce_plugin_item_default']['field_types'][] = $key;
      }
    }
  }
}

/**
 * Implements hook_field_widget_form_alter().
 *
 * Base fields have a description that's used for two very different purposes:
 * - To describe the field in the Views UI and other parts of the system.
 * - As user-facing help text shown on field widgets.
 * The text is rarely suitable for both, and in most cases feels redundant
 * as user-facing help text. Hence we remove it from that context, but only if
 * the definition didn't specify otherwise via our display_description setting.
 */
function commerce_field_widget_form_alter(&$element, FormStateInterface $form_state, $context) {
  $field_definition = $context['items']->getFieldDefinition();
  if (!($field_definition instanceof BaseFieldDefinition)) {
    // Not a base field.
    return;
  }
  if (strpos($field_definition->getTargetEntityTypeId(), 'commerce_') !== 0) {
    // Not a Commerce entity type.
    return;
  }
  if ($field_definition->getSetting('display_description')) {
    // The definition requested that the description stays untouched.
    return;
  }

  $element['#description'] = '';
  // Many widgets are nested one level deeper.
  $children = Element::getVisibleChildren($element);
  if (count($children) == 1) {
    $child = reset($children);
    $element[$child]['#description'] = '';
  }
}

/**
 * Gets the entity display for the given entity type and bundle.
 *
 * The entity display will be created if missing.
 *
 * @param string $entity_type
 *   The entity type.
 * @param string $bundle
 *   The bundle.
 * @param string $display_context
 *   The display context ('view' or 'form').
 *
 * @throws \InvalidArgumentException
 *   Thrown when an invalid display context is provided.
 *
 * @return \Drupal\Core\Entity\Display\EntityDisplayInterface
 *   The entity display.
 */
function commerce_get_entity_display($entity_type, $bundle, $display_context) {
  if (!in_array($display_context, ['view', 'form'])) {
    throw new \InvalidArgumentException(sprintf('Invalid display_context %s passed to _commerce_product_get_display().', $display_context));
  }

  $storage = \Drupal::entityTypeManager()->getStorage('entity_' . $display_context . '_display');
  $display = $storage->load($entity_type . '.' . $bundle . '.default');
  if (!$display) {
    $display = $storage->create([
      'targetEntityType' => $entity_type,
      'bundle' => $bundle,
      'mode' => 'default',
      'status' => TRUE,
    ]);
  }

  return $display;
}

/**
 * Helper for providing entity theme suggestions.
 *
 * @param string $entity_type_id
 *   The entity type ID.
 * @param array $variables
 *   An array of variables passed to the theme hook.
 *
 * @return array
 *   An array of theme suggestions.
 */
function _commerce_entity_theme_suggestions($entity_type_id, array $variables) {
  $original = $variables['theme_hook_original'];
  $entity = $variables['elements']['#' . $entity_type_id];
  $sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_');

  $suggestions = [];
  $suggestions[] = $original . '__' . $sanitized_view_mode;
  $suggestions[] = $original . '__' . $entity->bundle();
  $suggestions[] = $original . '__' . $entity->bundle() . '__' . $sanitized_view_mode;
  $suggestions[] = $original . '__' . $entity->id();
  $suggestions[] = $original . '__' . $entity->id() . '__' . $sanitized_view_mode;

  return $suggestions;
}

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

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