いくつかの計算に対処するいくつかの問題があります。私は製品ページを持っており、その製品ページには、割引価格でグループとして購入できる関連製品があります。私はすべてが機能していますが、計算/割引率から親製品を除外する問題があります。計算の親製品を省略します。
以下のコードは、親prodを割引から削除していますが、別のグループをカートに追加すると、最初に親を削除し、新しく追加した親は削除しません。
$ buy_together_idを確認し、一意のIDを持つ各製品の最初のものだけを確認する方法は、割引計算から除外されますか?
この問題に取り組むためにコードに最近追加されたのは、if($ k!= 0)の両方のインスタンスですが、最初の親だけですべての親ではありません。
はあなたが親製品にフラグを追加しようとすることができ、それはではなく、ループ
foreach ($products as $k => $v){
if ($k != 0) {
// ......
}
}
でより信頼性の高い状態を使用することができるようになる
セルジオ
、<?php
global $config, $current_area;
if ($current_area != 'C' || !function_exists('func_bt_distribute_discount')){
return;
}
$discount_to_add = 0;
$group_discounts = array();
$bts_in_cart = array();
foreach ($products as $k => $v){
if ($k != 0) {
if ($v['buy_together_id']){
foreach ($v['buy_together_id'] as $gid){
$bts_in_cart[$gid][] = $v['productid'];
}
}
}
}
// Go through each product and calculate discount to be applied. //
foreach ($products as $k => $v){
if ($k != 0) {
if ($v['buy_together_id']){
foreach ($v['buy_together_id'] as $buy_together_id){
$_discount = 0;
if (!isset($GLOBALS['group_bt_discounts'][$buy_together_id])){
$GLOBALS['group_bt_discounts'][$buy_together_id] = func_query_first('SELECT * FROM xcart_buy_together_groups
WHERE groupid='.intval($buy_together_id));
}
$g_discount = $GLOBALS['group_bt_discounts'][$buy_together_id];
$price = defined('BT_ADD_TAXES') && BT_ADD_TAXES && $v['taxed_price'] ? $v['taxed_price'] : $v['price'];
// Discount //
if ($g_discount['discount']){
if ($g_discount['discount_type'] == 'P'){
$_discount = ($price/100) * $g_discount['discount'];
} else {
$_discount = $g_discount['discount']/count($bts_in_cart[$buy_together_id]);
}
}
if ($_discount > 0){
/* Add to discount for the quantity */
if ($config['Buy_Together']['bt_apply_to_all'] == 'Y'){
$_discount *= $v['amount'];
}
// Change the product discount //
$products[$k] = func_bt_distribute_discount($products[$k], $_discount);
}
/* Cumulative total */
$discount_to_add += $_discount;
}
}
}
}
$return['products'] = $products;
$return['discount'] = $discount+$discount_to_add;
$return['discount_orig'] = $discount+$discount_to_add;
?>
これを解決するために必要な情報が不足しています。 – cmorrissey
@cmorrisseyこれはX-Cartのプラグインのファイル部分です。あなたが必要とする他のデータ/情報は本当にわかりません。私はプラグインの売り手に連絡し、彼は変更を加えることはできないと言ったが、変更するファイルは上記のものだった。 – Sergio
あなたの質問にこれらのタグを付ける!プラグインなどの名前を付けてください。 – cmorrissey