Обновление цены


Василий, очень нужна ваша помощь!

Я в msGetPrise прописал условие при котором снижение цены идёт, во-первых, не на всем сайте а только в корзине, а во-вторых только у пользователей которые уже сделали 3 заказа.
С точки зрения самого условия я думаю всё правильно, но всё равно взгляните, пожалуйста.
if ($_SERVER['REQUEST_URI'] == "/final-order"){
$uid = $modx->GetPlaceholder('modx.user.id');
$stmt = $modx->query("SELECT * FROM modx_ms_modOrders WHERE uid='$uid'");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

$myrow = array();
foreach($rows as $value){
	$myrow[] = $value['uid'];
}

if(count($myrow) >= 3){
$price -= 200;
}

return $price;
}
else{
return $price;
}

Вся проблема заключается, что когда я захожу в корзину, обновлений цены не происходит.
Если же я уберу первое условие, то цена изменится на всё сайте.

Подскажите пожалуйста, как можно изменить цену при таком условии (именно в корзине с выбранным товаром)?
01 октября 2012, 21:18    Ираклий Летодиани   
0    377 0

Комментарии (3)

  1. Toyo 05 октября 2012, 00:42 # 0
    Я не Василий, но думаю, что нужно посмотреть в сторону файла core/components/minishop/model/minishop/minishop.class.php
    В фунции changeCartCount (и, возможно, addToCart) делать эту самую проверку и менять стоимость в сессии пользователя ($_SESSION['minishop']['goods'][$key]['price']).
    1. Василий Наумкин 05 октября 2012, 06:09 # 0
      Можно и так, но тогда лучше класс расширить. bezumkin.ru/blog/2012/06/30/methods_change/

      А лучше — обойтись без этого и сделать все не меняя ядро магазина.
    2. Василий Наумкин 05 октября 2012, 06:08 # 0
      Товары вносятся в корзину с ценой, которая потом не меняется.

      Если вам нужно показывать другую цену именно в корзине, то проще всего это сделать фильтром вывода на цену в чанке tpl.msCart.row. А затем реально менять цену при сохранении заказа в hook`е для FormIt.

      Выходит довольно сложно, а у меня и так ощущение, что мы вам всей толпой помогаем магазин делать. Имейте совесть уже.
      Вы должны авторизоваться, чтобы оставлять комментарии.