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;
}
