Само по себе это дополнение актуально только для продвинутых пользователей, которые вышеозначенную функцию и административную обвязку способны написать самостоятельно. Но дополнение является законченным модулем и я предполагаю далее ссылаться на него, чтобы не включать каждый раз в описание инсталляции еще десяток пунктов, а просто писать "99. Выполните инсталляцию дополнения 'Price как функция'".
Также надо понимать, что дополнение касается только штатных мест ShopCMS, где показывается (и используется) цена. В большинстве своем сторонние модули не используют штатные функции ShopCMS для получения инфы о товаре (и это разумно, уж больно монстрообразна и избыточна та же функция getProduct), а содержат собственные SQL-запросы. Их придется переделывать аналогично.
0. копируем
multiprice_functions.php -> core/functions/
и переписываем функцию mPriceRecalc под свои надобности.
Сейчас она возращает то же самое, что получила, т.е. цена товара не изменится.
1. В файле cart_functions.php
в функции GetPriceProductWithOption
если пересчет нужен для суммы уже с добавленными вариантами, то перед
return $full_price;
а если пересчет нужен для суммы еще без добавления вариантов (т.е. довесок от вариантов не зависит от пересчета), то перед
foreach($variants as $vars)
вставляем
# BEGIN multiprice
$full_price = mPriceRecalc($full_price,(int)$productID);
# END multiprice
2. В файле product_functions.php
2.1. в функции GetProduct
2.1.1. после
if ( $product=db_fetch_row($q ) ){
вставляем
# BEGIN multiprice
$product['Price'] = mPriceRecalc($product['Price'],(int)$productID);
# END multiprice
2.1.2. если нужны изменения в суммах добавок по вариантам, то после
while ($_Row = db_fetch_row($Result)) {
вставляем
# BEGIN multiprice
$_Row['option_value'] = mPriceRecalc($_Row['option_value'],(int)$productID));
$_Row['value'] = mPriceRecalc($_Row['value'],(int)$productID));
# END multiprice
2.2. в функции GetExtraParametrs
если нужны изменения в суммах добавок по вариантам, то после
while( $_Rowue = db_fetch_assoc($q2) ){
вставляем
# BEGIN multiprice
$_Rowue['price_surplus'] = mPriceRecalc($_Rowue['price_surplus'],$_Row['productID']);
# END multiprice
2.3. в функции prdSearchProductByTemplate
перед
$row["PriceWithUnit"] = show_price($row["Price"]);
вставляем
# BEGIN multiprice
$row['Price'] = mPriceRecalc($row['Price'],$row["productID"]);
# END multiprice
3. В файле cart.php
если пересчет должен касаться суммы с вариантами, то перед
$k += $_SESSION["counts"][$i] * $sum;
а если пересчет должен касаться суммы еще без вариантов, то перед
foreach ( $_SESSION["configurations"][$i] as $varconf ) {
вставляем
# BEGIN multiprice
$sum = mPriceRecalc($sum,(int)$_SESSION["gids"][$i]);
# END multiprice
4. В файле home.php
после каждого (их три)
while ($row = db_fetch_row($q))
{
вставляем
# BEGIN multiprice
$row[3] = mPriceRecalc($row['Price'],$row['productID']);
$row['Price'] = mPriceRecalc($row['Price'],$row['productID']);
# END multiprice
5. В файле pricelist.php
после
while ($row1 = db_fetch_row($q))
{
вставляем
# BEGIN multiprice
$row1[2] = mPriceRecalc($row1['Price'],$row1['productID']);
# END multiprice
6. В файле shopping_cart_info.php
если пересчет должен касаться суммы с вариантами, то перед
$k += $_SESSION["counts"][$i]*$sum;
а если пересчет должен касаться суммы еще без вариантов, то перед
foreach( $_SESSION["configurations"][$i] as $vars )
вставляем
# BEGIN multiprice
$sum = mPriceRecalc($sum,(int)$_SESSION["gids"][$i]);
# END multiprice