acquia_commercemanager-8.x-1.122/modules/acm_sku/acm_sku.module

modules/acm_sku/acm_sku.module
<?php

/**
 * @file
 * Acquia Commerce product module file.
 *
 * Provides base hooks to the product functionality of Acquia Commerce
 * connector.
 */

use Drupal\Core\Render\Element;

/**
 * Implements hook_theme().
 */
function acm_sku_theme($existing, $type, $theme, $path) {
  return [
    'acm_sku' => [
      'render element' => 'elements',
    ],
    'sku_add_list' => [
      'variables' => [
        'content' => NULL,
      ],
    ],
    'acm_sku_price' => [
      'variables' => [
        'price' => NULL,
        'sku' => NULL,
      ],
    ],
  ];
}

/**
 * Implements hook_preprocess_HOOK().
 */
function acm_sku_preprocess_acm_sku(&$variables) {
  /** @var Drupal\acm\SKUInterface $sku */
  $sku = $variables['elements']['#acm_sku'];

  $variables['sku_entity'] = $sku;
  $variables['sku_url'] = $sku->toUrl();
  $variables['sku'] = [];

  foreach (Element::children($variables['elements']) as $key) {
    $variables['sku'][$key] = $variables['elements'][$key];
  }
}

/**
 * Format price value with currency.
 *
 * Default template: acm-sku-price.html.twig.
 *
 * @param array $variables
 *   An associative array containing:
 *   - price: a price value.
 *   - sku: Object with SKU.
 */
function template_preprocess_acm_sku_price(array &$variables) {
  $variables['price_as_float'] = $variables['price'];
  // We have to cast back to float, otherwise PHP throws a warning.
  $variables['price'] = $variables['sku']->getNumberFormattedPrice();
}

/**
 * Prepares variables for list of available sku type templates.
 *
 * Default template: sku-add-list.html.twig.
 *
 * @param array $variables
 *   An associative array containing:
 *   - content: An array of content types.
 */
function template_preprocess_sku_add_list(array &$variables) {
  if (!empty($variables['content'])) {
    /** @var \Drupal\acm_sku\Entity\SKUTypeInterface $type */
    foreach ($variables['content'] as $type) {
      $variables['types'][$type->id()]['label'] = $type->label();
      $variables['types'][$type->id()]['url'] = \Drupal::url('acm_sku.sku_add', ['acm_sku_type' => $type->id()]);
    }
  }
}

/**
 * Implements hook_theme_suggestions_HOOK().
 */
function acm_sku_theme_suggestions_acm_sku(array $variables) {
  $suggestions = [];
  $sku = $variables['elements']['#acm_sku'];
  $sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_');

  $suggestions[] = 'acm_sku__' . $sanitized_view_mode;
  $suggestions[] = 'acm_sku__' . $sku->bundle();
  $suggestions[] = 'acm_sku__' . $sku->bundle() . '__' . $sanitized_view_mode;
  $suggestions[] = 'acm_sku__' . $sku->id();
  $suggestions[] = 'acm_sku__' . $sku->id() . '__' . $sanitized_view_mode;
  return $suggestions;
}

/**
 * Implements hook_theme_suggestions_HOOK().
 */
function acm_sku_theme_suggestions_acm_sku_price(array $variables) {
  $suggestions = [];
  $sku = $variables['sku'];
  $sanitized_view_mode = $sku->getType();

  $suggestions[] = 'acm_sku_price__' . $sanitized_view_mode;
  $suggestions[] = 'acm_sku_price__' . $sku->bundle();
  $suggestions[] = 'acm_sku_price__' . $sku->bundle() . '__' . $sanitized_view_mode;
  $suggestions[] = 'acm_sku_price__' . $sku->id();
  $suggestions[] = 'acm_sku_price__' . $sku->id() . '__' . $sanitized_view_mode;
  return $suggestions;
}

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

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