Наскільки ми розуміємо потрібні варіанти продукту. Тоді вам потрібно створити плагін на основі цього інтерфейсу https://git.drupalcode.org/project/basket/-/blob/9.x/src/Plugins/Params/BasketParamsInterface.php
А також відобразити додаткове поле з параметрами на сторінці товару. Виходячи з інтерфейсу, ви повинні мати наступний плагін (приклад нижче)

<?php

namespace Drupal\MODULE_NAME\Plugin\Basket\Params;

use Drupal\basket\Plugins\Params\BasketParamsBaseForm;


/**
 * @BasketParams(
 *   id = "goods_params",
 *   name = "Goods params",
 *   node_type = {"product"},
 * )
 */
class GoodsParams extends BasketParamsBaseForm {

  /**
   * Form with parameters.
   */
  public function getParamsForm(&$form, $form_state, $entity, $ajax){

    $options = [];
    foreach ($entity->FIELDS_VARIANS as $field) {
      $options[$field->value] = $field->value;
    }

  if(!empty($options)){
      $form['variant'] = [
        '#type' => 'select',
        '#options' => $options,
        '#title' => 'Product variant',
        '#default_value' => $form_state->getValue(['params', 'variant']),
      ];
      if (empty($form_state->getValue(['params', 'variant']))) {
        $form['variant']['#default_value'] = key($options);
      }
      $form_state->setValue(['params', 'variant'], $form['variant']['#default_value']);
  }
 }

  /**
   * Interpretation of parameters.
   */
  public function getDefinitionParams(&$element, $params, $isInline = FALSE){
  $node = $params['_entity'];
  if (!empty($params['variant'])) {
   $element[] = [
    '#type' => 'item',
    '#title' => 'Product variant: ',
    '#markup' => $params['variant'],
   ];
  }
 }

  /**
   * Validation of parameters when adding / updating an order item.
   */
  public function validParams(&$response, &$isValid, $post){

 }

}


Після того як ви створите плагін, його потрібно буде активувати в кошику /admin/basket/settings-node_types
А також відобразити додаткове поле з параметрами на сторінці товару.
 

freehelpbg
Lottie file
Допомога для користувачів Alternativecommerce