Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

кастомизация sale.order.full

00 голосов
2
Здравствуйте.
В интернет магазине используется компонент "sale.order.full". Клиент хочет объединить последние 2 шага оформления заказа в один. Подскажите, по какому принципу объединять шаги 5 и 6?
спросил 11 Ноя, 13 от Snezhka (2,240 баллов)

2 Ответы

00 голосов
В зависимости от значения $_REQUEST["CurrentStep"] в компоненте определяется шаг оформления заказа и производятся нужные выборки. В компоненте помеченны части кода, которые выполняются на различных шагах:
Например, шаг первый:

Код
   //------------------ STEP 1 ----------------------------------------------
   if ($arResult["CurrentStep"] == 1)
   {
      $arResult["PERSON_TYPE_INFO"] = Array();
      $dbPersonType = CSalePersonType::GetList(
            array("SORT" => "ASC"),
            array("LID" => SITE_ID)
         );
      $bFirst = True;
      while ($arPersonType = $dbPersonType->GetNext())
      {
         if (IntVal($arResult["POST"]["PERSON_TYPE"]) == IntVal($arPersonType["ID"]) || IntVal($arResult["POST"]["PERSON_TYPE"]) <= 0 && $bFirst)
            $arPersonType["CHECKED"] = "Y";
         $arResult["PERSON_TYPE_INFO"][] = $arPersonType;
         $bFirst = False;
      }
         
      if(CModule::IncludeModule("statistic"))
      {
         $event1 = "eStore";
         $event2 = "Step4_1";
         $event3 = "";

         if (is_array($arProductsInBasket))
         {
            foreach($arProductsInBasket as $ar_prod)
            {
               $event3 .= $ar_prod["PRODUCT_ID"].", ";
            }
         }
         $e = $event1."/".$event2."/".$event3;
         
         if(!is_array($_SESSION["ORDER_EVENTS"]) || (is_array($_SESSION["ORDER_EVENTS"]) && !in_array($e, $_SESSION["ORDER_EVENTS"]))) // check for event in session
         {
               CStatistic::Set_Event($event1, $event2, $event3);
               $_SESSION["ORDER_EVENTS"][] = $e;
         }
      }
   }


Остальные аналогично.

Для каждого шага оформления подключается свой файл шаблона.

Код
if ($arResult["CurrentStep"] == 1)
            include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step1.php");
         elseif ($arResult["CurrentStep"] == 2)
            include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step2.php");
         elseif ($arResult["CurrentStep"] == 3)
            include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step3.php");
         elseif ($arResult["CurrentStep"] == 4)
            include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step4.php");
         elseif ($arResult["CurrentStep"] == 5)
            include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step5.php");
         elseif ($arResult["CurrentStep"] >= 6)
            include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step6.php");


Вам просто в компоненте на 5 шаге нужно получить данные, которые вы получаете на 6 шаге. И соответственно, кастомизировать шаблон вывода 5 шага - выводить там данные 5 и 6 шагов.


А вообще, рекомендую использовать компонент bitrix:sale.order.ajax. Там в принципе один шаг.
ответил 23 Дек, 13 от Ajattara (380 баллов)
00 голосов
Спасибо
ответил 08 Апр, 14 от Snezhka (2,240 баллов)

Похожие вопросы

0 голосов
2 ответов
+1 голос
1 ответ
0 голосов
1 ответ
спросил 23 Июль, 15 от levshaszr (200 баллов)
0 голосов
3 ответов
спросил 29 Март, 14 от Snezhka (2,240 баллов)
0 голосов
4 ответов
спросил 03 Фев, 14 от Jaden (260 баллов)