リゾート予約会社の opencart を変更しています。そのためには、製品ページに複数のチェックボックス オプションが必要です。しかし、チェックボックス、ラジオボタンで選択したオプション(価格)をすべて含む単価をどこから計算しているのかわかりません。編集したい場合は、どこで編集できますか。
チェックボックスを選択すると、ユーザーが選択した日付を比較し、一致する場合はそこから値を取得します。これで、表に開始日と終了日を追加しましたproduct_option_value
。管理エリアから、特定のオプションの前に日付を入力できます。
製品/カートページで選択された値のみが計算される方法と場所がわかりません。
私に提案してください
これが私のサイトです。画像を添付できないため、私のページを見るためのリンクを提供しています。
私の製品ページには複数の選択肢があります。つまり、シングルには 3 つのオプション、大人には 3 つのオプションがあります。これで、すべての計算は問題ありません。しかし、チェックボックスを選択すると(たとえば、シングルを選択すると)、ユーザーが入力した日付で開始日と終了日をチェックする必要があります。その価格を選択し、カートページに単価を表示する必要があります。
しかし、今では日付を確認せずに価格を選ぶだけです。選択したチェックボックスの ID を価格なしで渡すことができれば、そこで残りを計算できます。私はこれを取得していません。
ここに私のカタログ/コントローラー/チェックアウト/カート.phpがあります
$option_data[] = array(
'product_option_id' => $option['product_option_id'],
'option_id' => $option['option_id'],
'type' => $option['type'],
'name' => $option['name'],
'price' => $option['value'],
'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
);
//echo $option['value'];
//echo $option['option_value_id'];
//echo $option['type'];
if($option['type'] == "checkbox")
{
$id = $option['option_value_id'];
//echo $id;
}
if($option['name'] =="Check-In")
{
$this->data['value1'] = $value;
$this->data['date1'] = $this->data['value1'];
// $this->data['date1'];
$_SESSION['data12'] = $this->data['date1'];
}
//echo $_SESSION['data12'];
$this->data['mydate1'] = strtotime($_SESSION['data12']);
if($option['name'] == "Check-Out")
{
$this->data['value2'] = $option['option_value'];
$this->data['date2'] = $this->data['value2'];
$_SESSION['data13'] = $this->data['date2'];
// $this->data['date2'];
}
$this->data['mydate2'] = strtotime($_SESSION['data13']);
$difference = abs(($this->data['mydate2']) - ($this->data['mydate1']));
$this->data['totaldays1'] = floor($difference/(60*60*24));
// $this->data['totaldays1'];
$total123 = (int)$this->data['totaldays1'];
// $total123;
$_SESSION['tot123'] = $total123;
//$my3 = $_SESSION['tot123'];
//$this->data['my3'] = $_SESSION['tot123'];
}
////////////////////////////////////////////////////////////MY CODE SHOULD GO HERE******************************************
$roomRate = $this->currency->format($this->tax->getRatesofRooms($id, $_SESSION['data12'],$_SESSION['data13'] ));
//$roomRate = $this->currency->format($this->tax->getRatesofRooms($id, $_SESSION['data12'],$_SESSION['data13'] ));
//echo $roomRate;
//$price = $roomRate;
//echo $price;
//$product['price'] = $roomRate;
$product['price'] += $roomRate;
//echo $product['price'];
// Display prices
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')));
//echo $price;
}
else {
$price = false;
}
//$product['price'];
// Display prices
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$total = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $_SESSION['tot123']);
} else {
$total = false;
}
// $total1;
// $total1;
$this->data['products'][] = array(
'key' => $product['key'],
'thumb' => $image,
'name' => $product['name'],
'model' => $product['model'],
//'checkin' => $product['checkin'],
//'checkout' => $product['checkout'],
'option' => $option_data,
'quantity' => $product['quantity'],
'stock' => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
'reward' => ($product['reward'] ? sprintf($this->language->get('text_points'), $product['reward']) : ''),
'price' => $price,
'total' => $total,
'href' => $this->url->link('product/product', 'product_id=' . $product['product_id']),
'remove' => $this->url->link('checkout/cart', 'remove=' . $product['key'])
);
}
ここでは、日付を比較せずに選択したチェックボックスの価格を含む価格を計算しています
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')));
//echo $price;
}
else {
$price = false;
}
選択されたチェックボックスの値を取得する場所から取得していません。(demo/demo) demo/demo http://netelity.com/resort/adminを指定すると、このリンクで管理者を確認できます。