Проблема с удалением шагов в корзине

#
Проблема с удалением шагов в корзине
Есть магазин. Установлены все обновления.

Есть задача: убрать все шаги кроме первого, то есть чтобы после первого шага заказ оформлялся.

Что для этого было сделано:

1. Обновил свою динамическую страницу с вашего демо сайта

2. Из формы "данные о заказчике" передал переменные:

<input name="step_1_1a" type="hidden" value="1" />
<input type="hidden" name="system_of_pay_id" value="1" />
<input name="step_1" type="hidden" value="1" />


3. В типовой динамической странице изменил первый  шаг (step_1)


   /* Ввод адреса доставки */
   if (isset($_POST['step_1']))
   {
      $external_propertys = array ();

      /* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
      if (isset($_POST['step_1_1a']))
      {
         /* Сохраняем данные о пользователе в сессию */
         $external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
         $external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
         $external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
         $external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
         $external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
         $external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
         $external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($_POST['site_users_address']);
         $external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
      }
      else
      {
         $aInfoSiteUser = $SiteUsers->GetSiteUser($site_users_id);

         $external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($aInfoSiteUser['site_users_name']);
         $external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($aInfoSiteUser['site_users_surname']);
         $external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($aInfoSiteUser['site_users_patronymic']);
         $external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($aInfoSiteUser['site_users_email']);
         $external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($aInfoSiteUser['site_users_phone']);
         $external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($aInfoSiteUser['site_users_fax']);
         $external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($aInfoSiteUser['site_users_address']);
         $external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($aInfoSiteUser['site_users_company']);
         $external_propertys['site_users_postcode'] = $_SESSION['index'] = to_str($aInfoSiteUser['site_users_postcode']);
      }

      /* Запоминаем купон */
      $_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);


/* Если выбрана (существует) платежная система */
      if (to_int($_POST['system_of_pay_id']) != 0)
      {
         /* Вызываем обработчик платежной системы */
         if (!$shop->ExecSystemsOfPayHandler(to_int($_POST['system_of_pay_id'])))
         {
            /* Не удалось найти обработчик */
            show_error_message("Не найден обработчик платежной системы с номером ".to_int($_POST['system_of_pay_id']));
         }
      }
      else
      {
         /* Ошибка, не указана платежная система! */
         show_error_message('Ошибка! Не указана ни одна платежная система.');
      }

/* Отображаем форму ввода адреса */
// Не выбираем show_location, show_city и show_city_area, т.к. подгружаются через AJAX
//$shop->ShowAddress(to_str($GLOBALS['LA']['xsl_delivery_address']), $shop_id, array('show_location' => false, 'show_city' => false, 'show_city_area' => false), $external_propertys);

   }


Теперь если нажать "оформить заказ" мы попадаем на следующею страниу где написано:

"Ваш заказ оформлен

Заказанных товаров нет

Спасибо за использование услуг нашего магазина."

Товары из корзины в итоге не удаляются и заказ в админку не приходит.


Помогите пожалуйста, уже руки опускаются.

P.S. На форуме прочитал все темы по удалению шагов, все что было написано там сделал и привел вам в этом посте выше. Может быть у вас что-то обновилось и методы из старых тем больше не работают?
Разработка и поддержка сайтов на HostCMS
Модератор
#
Re: Проблема с удалением шагов в корзине
alek001,
принцип удаления следующий:
1. Переименовывать шаги не нужно.
2. Код тех шагов, что пропускаются, дописывается к коду предыдущего (или предпредыдщуего, если он пропускается) шага, при этом для значений, которые должны быть приняты из формы, указывается некоторое значение, например 0 для выбранной доставки, 0 для выбранной формы оплаты и так далее.
#
Re: Проблема с удалением шагов в корзине
HostCMS,
Все работает, огромное спасибо. Но есть одно НО:

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

У меня же сейчас на последнем шаге пишется "Ваш заказ оформлен", заказ кладется в админку, но справа все равно в краткой корзине товары остаются. После перехода на другую страницу краткая корзина очищается.

Думал поменять в настроках Дин страницы step_4 на step_1, тогда при оформлении если не заполнить поле имя и нажать оформить заказ все товары пропадают. если сразу корректно заполнить форму то все оформляется корректно и товары из краткой корзины на последнем шаге пропадают.

Вот часть кода нид страницы:

/* Ввод адреса доставки */
   if (isset($_POST['step_1']))
   {
      $external_propertys = array ();

      /* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
      if (isset($_POST['step_1_1a']))
      {
         /* Сохраняем данные о пользователе в сессию */
         $external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
         $external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
         $external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
         $external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
         $external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
         $external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
         $external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($_POST['site_users_address']);
         $external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
      }
      
      /* Запоминаем купон */
      $_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);

/* Отображаем форму ввода адреса */
// Не выбираем show_location, show_city и show_city_area, т.к. подгружаются через AJAX
//$shop->ShowAddress(to_str($GLOBALS['LA']['xsl_delivery_address']), $shop_id, array('show_location' => false, 'show_city' => false, 'show_city_area' => false), $external_propertys);

/* ШАГ ВТОРОЙ */


/* Сохраняем данные, введенные на первом этапе */
      $country = '0';
      $location = '0';
      $city = '0';
      $city_area = '0';

      // Сбрасываем информацию о последнем заказе
      $_SESSION['last_order_id'] = 0;

      /* Пишем информацию об адресе доставки в сессию */
      $_SESSION['country'] = $country;
      $_SESSION['location'] = $location;
      $_SESSION['city'] = $city;
      $_SESSION['city_area'] = $city_area;
      $_SESSION['index'] = '0';
      $_SESSION['full_address'] = $_SESSION['site_users_address'];

      $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
      $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
      $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
      $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
      $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
      $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
      $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
      $_SESSION['description'] = to_str($_POST['description']);

      /* Индекс и полный адрес (в массив дополнительных параметров) */
      $external_propertys['index'] = '0';
      $external_propertys['full_address'] = '0';

      /* Получаем количество элементов, их общую цену, вес, валюту для заданного пользователя */
      $a_param = $shop->SelectAllItemsFromCartForUser($shop_id, $site_users_id);

      /* Выбираем все доступные типы доставки (с группировкой по типу доставки) */
      $param = array();
      $param['shop_coupon_text'] = to_str($_SESSION['shop_coupon_text']);

// $shop->ShowTypeOfDelivery($shop_id, $country, $location, $city, $city_area, $a_param['weight'], $a_param['price'], to_str($GLOBALS['LA']['xsl_shop_delivery']), $param, $external_propertys);


/* Шаг третий */

/* Обрабатываем полученные данные о типе доставки */

      $_SESSION['cond_of_delivery'] = '0';

      /* Расчитываем цену доставки */

      /* Получаем данные о магазине */
      $shop_row = $shop->GetShop($shop_id);

      $row = $shop->GetCondOfDelivery($_SESSION['cond_of_delivery']);

      /* идентификатор валюты магазина */
      $shop_currency_id = to_int($shop_row['shop_currency_id']);
      $coefficient = $shop->GetCurrencyCoefficientToShopCurrency($row['shop_currency_id'], $shop_currency_id);
      $price_delivery = sprintf("%.2f", $row['shop_cond_of_delivery_price'] * $coefficient);

      $_SESSION['cond_of_delivery_price'] = $price_delivery;

      /* Выводим  платежные системы */
      $external_propertys['cond_of_delivery'] = '0';

      //$shop->ShowSystemOfPay(to_str($GLOBALS['LA']['xsl_system_of_pay']), $external_propertys);


/* шаг четвертый */

/* Если выбрана (существует) платежная система */
      if (to_int($_POST['system_of_pay_id']) != 0)
      {
         /* Вызываем обработчик платежной системы */
         if (!$shop->ExecSystemsOfPayHandler(to_int($_POST['system_of_pay_id'])))
         {
            /* Не удалось найти обработчик */
            show_error_message("Не найден обработчик платежной системы с номером ".to_int($_POST['system_of_pay_id']));
         }
      }
      else
      {
         /* Ошибка, не указана платежная система! */
         show_error_message('Ошибка! Не указана ни одна платежная система.');
      }



Разработка и поддержка сайтов на HostCMS
Модератор
#
Re: Проблема с удалением шагов в корзине
alek001 писал(а):
У меня же сейчас на последнем шаге пишется «Ваш заказ оформлен», заказ кладется в админку, но справа все равно в краткой корзине товары остаются. После перехода на другую страницу краткая корзина очищается.

правильно, корзина очищается в коде динамической страницы, а этот код ниже, чем вывод краткой корзины, поэтому на момент вывода краткой корзины она еще не очищена.
#
Re: Проблема с удалением шагов в корзине
а как сделать чтобы чтобы выодилось "ваш заказ оформлен" и кратка корзина уже была пусто?

Просто немного не допонял вашей мысли )
Разработка и поддержка сайтов на HostCMS
Модератор
#
Re: Проблема с удалением шагов в корзине
alek001 писал(а):
а как сделать чтобы чтобы выодилось «ваш заказ оформлен» и кратка корзина уже была пусто?

Тогда нужно переносить данные из корзины в заказ на предыдущем шаге, чтобы к моменту отображения корзины она была пуста.
#
Еще один вариант удаления шагов, на данный момент рабочий
В коде динамической страницы корзины необходимо этот код:

/* Ввод адреса доставки */
   if (isset($_POST['step_1']))
   {
      $external_propertys = array ();

      /* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
      if (isset($_POST['step_1_1a']))
      {
         /* Сохраняем данные о пользователе в сессию */
         $external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
         $external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
         $external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
         $external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
         $external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
         $external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
         $external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($_POST['site_users_address']);
         $external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
      }
      else
      {
         $aInfoSiteUser = $SiteUsers->GetSiteUser($site_users_id);

         $external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($aInfoSiteUser['site_users_name']);
         $external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($aInfoSiteUser['site_users_surname']);
         $external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($aInfoSiteUser['site_users_patronymic']);
         $external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($aInfoSiteUser['site_users_email']);
         $external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($aInfoSiteUser['site_users_phone']);
         $external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($aInfoSiteUser['site_users_fax']);
         $external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($aInfoSiteUser['site_users_address']);
         $external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($aInfoSiteUser['site_users_company']);
         $external_propertys['site_users_postcode'] = $_SESSION['index'] = to_str($aInfoSiteUser['site_users_postcode']);
      }

      /* Запоминаем купон */
      $_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);

      /* Отображаем форму ввода адреса */
      // Не выбираем show_location, show_city и show_city_area, т.к. подгружаются через AJAX
      $shop->ShowAddress(to_str($GLOBALS['LA']['xsl_delivery_address']), $shop_id, array('show_location' => false, 'show_city' => false, 'show_city_area' => false), $external_propertys);

   }
   /* Отображаем доступные доставки */
   elseif (isset($_POST['step_2']))
   {
      /* Сохраняем данные, введенные на первом этапе */
      $country = to_int($_POST['country']);
      $location = to_int($_POST['location']);
      $city = to_int($_POST['sel_city']);
      $city_area = to_int($_POST['sel_city_area']);

      // Сбрасываем информацию о последнем заказе
      $_SESSION['last_order_id'] = 0;

      /* Пишем информацию об адресе доставки в сессию */
      $_SESSION['country'] = $country;
      $_SESSION['location'] = $location;
      $_SESSION['city'] = $city;
      $_SESSION['city_area'] = $city_area;
      $_SESSION['index'] = to_int($_POST['index']);
      $_SESSION['full_address'] = to_str($_POST['full_address']);

      $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
      $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
      $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
      $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
      $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
      $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
      $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
      $_SESSION['description'] = to_str($_POST['description']);

      /* Индекс и полный адрес (в массив дополнительных параметров) */
      $external_propertys['index'] = to_str($_POST['index']);
      $external_propertys['full_address'] = to_str($_POST['full_address']);

      /* Получаем количество элементов, их общую цену, вес, валюту для заданного пользователя */
      $a_param = $shop->SelectAllItemsFromCartForUser($shop_id, $site_users_id);

      /* Выбираем все доступные типы доставки (с группировкой по типу доставки) */
      $param = array();
      $param['shop_coupon_text'] = to_str($_SESSION['shop_coupon_text']);
      
      // Передаем количество товара
      $param['count'] = $a_param['quantity'];
      
      $shop->ShowTypeOfDelivery($shop_id, $country, $location, $city, $city_area, $a_param['weight'], $a_param['price'],
      to_str($GLOBALS['LA']['xsl_shop_delivery']), $param, $external_propertys);
   }
   /* Показываем страницу доступных платежных систем */
   elseif (isset($_POST['step_3']))
   {
      /* Обрабатываем полученные данные о типе доставки */
      $_SESSION['cond_of_delivery'] = to_int($_POST['cond_of_delivery']);

      /* Расчитываем цену доставки */

      /* Получаем данные о магазине */
      $shop_row = $shop->GetShop($shop_id);

      $row = $shop->GetCondOfDelivery($_SESSION['cond_of_delivery']);

      /* идентификатор валюты магазина */
      $shop_currency_id = to_int($shop_row['shop_currency_id']);
      $coefficient = $shop->GetCurrencyCoefficientToShopCurrency($row['shop_currency_id'], $shop_currency_id);
      $price_delivery = sprintf("%.2f", $row['shop_cond_of_delivery_price'] * $coefficient);

      $_SESSION['cond_of_delivery_price'] = $price_delivery;

      /* Выводим  платежные системы */
      $external_propertys['cond_of_delivery'] = to_int($_POST['cond_of_delivery']);

      $shop->ShowSystemOfPay(to_str($GLOBALS['LA']['xsl_system_of_pay']), $external_propertys, array('shop_shops_id' => $shop_id));
   }
   elseif (isset($_POST['step_4']))
   {
      /* Если выбрана (существует) платежная система */
      if (to_int($_POST['system_of_pay_id']) != 0)
      {
         /* Вызываем обработчик платежной системы */
         if (!$shop->ExecSystemsOfPayHandler(to_int($_POST['system_of_pay_id'])))
         {
            /* Не удалось найти обработчик */
            show_error_message("Не найден обработчик платежной системы с номером ".to_int($_POST['system_of_pay_id']));
         }
      }
      else
      {
         /* Ошибка, не указана платежная система! */
         show_error_message('Ошибка! Не указана ни одна платежная система.');
      }
   }
   else
   {
      /* Очищаем сессию */
      if (isset($_SESSION['CART'][$shop_id]))
      {
         unset($_SESSION['CART'][$shop_id]);
      }

      /* Отображаем корзину */
      $shop->ShowCart($shop_id, $site_users_id,
      to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])));
   }
}
elseif ($site_users_id === 0 || !empty($message))
{
   /* Выводим корзину */
   $external_propertys = array();

   if (!empty($message))
   {
      $external_propertys['message'] = $message;
   }

   $external_propertys['site_users_name'] = to_str($_POST['site_users_name']);
   $external_propertys['site_users_surname'] = to_str($_POST['site_users_surname']);
   $external_propertys['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
   $external_propertys['site_users_email'] = to_str($_POST['site_users_email']);
   $external_propertys['site_users_phone'] = to_str($_POST['site_users_phone']);
   $external_propertys['site_users_fax']   = to_str($_POST['site_users_fax']);
   $external_propertys['site_users_address'] = to_str($_POST['site_users_address']);
   $external_propertys['site_users_company'] = to_str($_POST['site_users_company']);

   $shop->ShowCart($shop_id, $site_users_id, to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])), $external_propertys);

   if (class_exists("SiteUsers"))
   {
      /* Выводим форму быстрой регистрации (регистрация для пользователей) */
      $GLOBALS['external_propertys']['ПоказатьАвторизацию'] = 'true';
      $SiteUsers->ShowSiteUserRegistartion($site_users_id,
      to_str($GLOBALS['LA']['xsl_quick_registration']), $GLOBALS['external_propertys']);
   }
}
else
{
   ?>
Вам необходимо подтвердить регистрацию!
   <?php
}

?>


Заменить на этот. В переменную $system_of_pay_id подставить свой номер платежной системы. В моем варианте 1 (по умолчанию это наличными)


/* Ввод адреса доставки */
   if (isset($_POST['step_1']))
   {
      /* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
      if (isset($_POST['step_1_1a']))
      {
         /* Сохраняем данные о пользователе в сессию */
        
         /*$_SESSION['country'] ='Россия';
         $_SESSION['location'] ='Москва и Московская обл.';
         $_SESSION['city'] ='Москва';*/
        
         // Сбрасываем информацию о последнем заказе
         $_SESSION['last_order_id'] = 0;
        
         $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
         $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
         $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
         $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
         $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
         $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
         $_SESSION['full_address'] = to_str($_POST['site_users_address']);
         $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
         $_SESSION['description'] = to_str($_POST['description']);
      }

/* Запоминаем купон */
$_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);

/* Отображаем форму ввода адреса */
//$shop->ShowAddress(to_str($GLOBALS['LA']['xsl_delivery_address']), $shop_id);

$system_of_pay_id = 1;

   if (to_int($system_of_pay_id) != 0)
      {
         if (!$shop->ExecSystemsOfPayHandler(to_int($system_of_pay_id)))
         {
            show_error_message("Не найден обработчик платежной системы с номером ".to_int($_POST['system_of_pay_id']));
         }
      }
      else
      {
         show_error_message('Ошибка! Не указана ни одна платежная система.');
      }
}

   else
   {
      /* Очищаем сессию */
      if (isset($_SESSION['CART'][$shop_id]))
      {
         unset($_SESSION['CART'][$shop_id]);
      }

      /* Отображаем корзину */
      $shop->ShowCart($shop_id, $site_users_id,
      to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])));
   }
}
elseif ($site_users_id === 0 || !empty($error))
{
   /* Выводим корзину */
   $external_propertys = array();

   if (!empty($error))
   {
      $external_propertys['message'] = $error;
   }

   $external_propertys['site_users_name'] = to_str($_POST['site_users_name']);
   $external_propertys['site_users_surname'] = to_str($_POST['site_users_surname']);
   $external_propertys['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
   $external_propertys['site_users_email'] = to_str($_POST['site_users_email']);
   $external_propertys['site_users_phone'] = to_str($_POST['site_users_phone']);
   $external_propertys['site_users_fax']   = to_str($_POST['site_users_fax']);
   $external_propertys['site_users_address'] = to_str($_POST['site_users_address']);
   $external_propertys['site_users_company'] = to_str($_POST['site_users_company']);

   $shop->ShowCart($shop_id, $site_users_id, to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])), $external_propertys);

   if (class_exists("SiteUsers"))
   {
      /* Выводим форму быстрой регистрации (регистрация для пользователей) */
      $GLOBALS['external_propertys']['ПоказатьАвторизацию'] = 'true';
      $SiteUsers->ShowSiteUserRegistartion($site_users_id,
      to_str($GLOBALS['LA']['xsl_quick_registration']), $GLOBALS['external_propertys']);
   }
}
else
{
   ?>
Вам необходимо подтвердить регистрацию!
   <?php
}

?>


После этого в НАСТРОЙКАХ типовой страницы заменить этот код:


/* Необходимо перенести товары из кукисов в сессию и очистить кукисы */
if ((isset($_POST['step_4']) || isset($_POST['step_1_1a'])) && !class_exists("SiteUsers"))
{
   /* Читаем массив из кукисов */
   if (!empty($_COOKIE['CART']))
   {
      $session_cart = array();
      $postpone_items = array();

      $cart_from_cookies = $shop->GetCookieCart();

      $items = to_array($cart_from_cookies[$shop_id]);

      foreach ($items as $key => $value)
      {
         if ($value['shop_cart_flag_postpone'])
         {
            /* Оставляем товар в корзине кукисов */
            $postpone_items[$key] = $value;
         }
         else
         {
            /* Добавляем в корзину сессии */
            $session_cart[$key] = $value;
         }
      }
      
      /* Добавляем данные в сессию */
      $_SESSION['CART'][$shop_id] = $session_cart;

      /* Если массив с отложенными товарами не пуст - сохраняем его в кукисы */
      if (count($postpone_items) > 0 && isset($_POST['step_4']))
      {
         $cart_from_cookies[$shop_id] = $postpone_items;
      }
      elseif(isset($_POST['step_4']))
      {
         /* Удалям целиком кукисы карзины для данного магазина */
         unset($cart_from_cookies[$shop_id]);
      }

      /* Сохраняем данные */
      $shop->SetCookieCart($cart_from_cookies, time() + 31536000, '/');
   }
}



На этот:


/* Необходимо перенести товары из кукисов в сессию и очистить кукисы */
if ((isset($_POST['step_4']) || isset($_POST['step_1_1a'])) && !class_exists("SiteUsers"))
{
   /* Читаем массив из кукисов */
   if (!empty($_COOKIE['CART']))
   {
      $session_cart = array();
      $postpone_items = array();

      $cart_from_cookies = $shop->GetCookieCart();

      $items = to_array($cart_from_cookies[$shop_id]);

      foreach ($items as $key => $value)
      {
         if ($value['shop_cart_flag_postpone'])
         {
            /* Оставляем товар в корзине кукисов */
            $postpone_items[$key] = $value;
         }
         else
         {
            /* Добавляем в корзину сессии */
            $session_cart[$key] = $value;
         }
      }
      
      /* Добавляем данные в сессию */
      $_SESSION['CART'][$shop_id] = $session_cart;

      /* Если массив с отложенными товарами не пуст - сохраняем его в кукисы */
         if (count($postpone_items) > 0 && isset($_POST['step_1_1a']))
                /*if (count($postpone_items) > 0 && isset($_POST['step_4']))*/
      {
         $cart_from_cookies[$shop_id] = $postpone_items;
      }
                   elseif(isset($_POST['step_1_1a']))
      /*elseif(isset($_POST['step_4']))*/
      {
         /* Удалям целиком кукисы карзины для данного магазина */
         unset($cart_from_cookies[$shop_id]);
      }

      /* Сохраняем данные */
      $shop->SetCookieCart($cart_from_cookies, time() + 31536000, '/');
   }
}


а также блок:
/* Пересчет товара в корзине */
if (isset($_POST['recount'])
// Пересчет при выборе первого шага
|| isset($_POST['step_1']))
{


на этот:
/* Пересчет товара в корзине */
if (isset($_POST['recount']))
// Пересчет при выборе первого шага
//|| isset($_POST['step_1']))
{


Все должно работать! Большое спасибо за оказанную помощь Ведущему специалисту службы поддержки Наталье Борщевой
#
Re: Проблема с удалением шагов в корзине
Да. Код работает.
А как в нём задействовать проверку правильности ввода, что-б не оформлял заказ с пустыми полями?
Модератор
#
Re: Проблема с удалением шагов в корзине
Самое простое - добавить проверки на JavaScript в клиентском разделе.
#
Re: Проблема с удалением шагов в корзине
Не пойму где именно.
И можно хоть какой-то пример кода.
Авторизация