arch-8.x-1.x-dev/modules/checkout/modules/onepage/arch_onepage.module

modules/checkout/modules/onepage/arch_onepage.module
<?php
/**
 * @file
 * Arch onepage module file.
 */

use Drupal\arch_product\Entity\Product;

require_once __DIR__ . '/includes/deprecated.inc';

/**
 * Implements hook_theme().
 */
function arch_onepage_theme() {
  return [
    'arch_checkout_op' => [
      'variables' => [
        'checkoutform' => NULL,
        'billing' => NULL,
        'shipping' => NULL,
      ],
    ],
    'arch_checkout_op_summary' => [
      'variables' => [
        'attributes' => NULL,
        'cart' => NULL,
      ],
    ],
  ];
}

/**
 * Preprocess arch checkout summary theme.
 *
 * @param array $variables
 *   Variables array.
 */
function arch_onepage_preprocess_arch_checkout_op_summary(array &$variables) {
  $variables['attributes']['class'][] = 'checkout-cart-sidebar';
  $products = [];
  /** @var \Drupal\arch_cart\Cart\CartInterface $cart */
  $cart =& $variables['cart'];

  /** @var \Drupal\Core\Render\Renderer $renderer */
  $renderer = \Drupal::service('renderer');
  /** @var \Drupal\arch_price\Price\PriceFormatterInterface $price_formatter */
  $price_formatter = \Drupal::service('price_formatter');

  /** @var \Drupal\Core\Entity\EntityViewBuilder $media_view_builder */
  $media_view_builder = \Drupal::entityTypeManager()->getViewBuilder('media');

  foreach ($cart->getProducts() as $key => $product_data) {
    /** @var \Drupal\arch_product\Entity\ProductInterface $product */
    $product = Product::load($product_data['id']);
    if (empty($product)) {
      continue;
    }

    $image = NULL;
    if (
      $product->hasField('field_gallery')
      && !$product->get('field_gallery')->isEmpty()
    ) {
      try {
        /** @var \Drupal\media\Entity\Media $image_media */
        $image_media = $product->get('field_gallery')
          ->first()
          ->get('entity')
          ->getTarget()
          ->getValue('entity');
        $image_render_array = $media_view_builder->view($image_media, 'cart');
        $image = $renderer->render($image_render_array);
      }
      catch (\Exception $e) {
        // Do nothing. $image is NULL by default.
      }
    }

    $price = $product->getActivePrice();

    $products[$key]['name'] = $product->label();
    $products[$key]['img'] = $image;
    $products[$key]['price'] = $price->getGrossPrice();
    $products[$key]['qty'] = $product_data['quantity'];
    $products[$key]['line_sum'] = $price->getGrossPrice() * $product_data['quantity'];
  }

  $variables['products'] = $products;
  $products_total = $cart->getTotal();
  $variables['products_total'] = $products_total['gross'];
  $shipping_price = $cart->getShippingPrice();
  $variables['shipping'] = $price_formatter->buildGross($shipping_price);
  $grand_total = $cart->getGrandTotal();
  $variables['grand_total'] = $grand_total['gross_total'];
}

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

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