Давайте українською?
Залишити р*сійську
/** * Implements hook_basket_getItemPrice_alter(). */ function basket_other_basket_getItemPrice_alter(&$price, $row) { $node = \Drupal\node\Entity\Node::load($row->nid); $price_old = $currency = 0; if (!empty($node->field_product_options[0])) { $options = $node->get('field_product_options')->referencedEntities(); $price = !empty($options[0]->field_options_price[0]->value) ? (float) $options[0]->field_options_price[0]->value : 0; $price_old = !empty($options[0]->field_options_price[0]->old_value) ? (float) $options[0]->field_options_price[0]->old_value : 0; $currency = !empty($options[0]->field_options_price[0]->currency) ? (float) $options[0]->field_options_price[0]->currency : 0; } if (!empty($row->all_params['option_param'])) { [$id, $tid] = explode('-', $row->all_params['option_param']); $entity = \Drupal::entityTypeManager()->getStorage('paragraph')->load($id); if (!empty($entity)) { $price = !empty($entity->field_options_price[0]->value) ? (float) $entity->field_options_price[0]->value : 0; $price_old = !empty($entity->field_options_price[0]->old_value) ? (float) $entity->field_options_price[0]->old_value : 0; $currency = !empty($entity->field_options_price[0]->currency) ? (float) $entity->field_options_price[0]->currency : 0; } } $save = !empty($price_old) ? round($price * 100 / $price_old, 10) : 0; $clear_price = !empty($price_old) ? $price_old : $price; if (!empty($node->field_product_category[0])) { foreach ($node->get('field_product_category') ->referencedEntities() as $vals) { if (empty($vals->field_product_categories_save[0]->value)) { continue; } if (!empty($vals->field_product_categories_end[0]->value) && strtotime($vals->field_product_categories_end[0]->value) < time()) { continue; } if ($vals->field_product_categories_save[0]->value <= $save) { continue; } $save = $vals->field_product_categories_save[0]->value; // Тут розраховується фінальна ціна зі знижкою $price = $clear_price - round($clear_price * $save / 100, 2); $price_old = $clear_price; } } // ВИДАЛЕНО: $price = !empty($price_old) ? $price_old : $price; // Цей рядок раніше скасовував знижку і повертав базову ціну. \Drupal::service('Basket')->Currency()->PriceConvert($price, $currency); }
Давайте українською?
Залишити р*сійську