корзина - обновление страницы

#
корзина - обновление страницы
Здравствуйте.
Сейчас после оформления заказа, находясь на странице с данными о заказе, если ее обновить то заказанные товары пропадают, и выводится надпись - заказанных товаров нет. Подскажите как сделать чтобы после обновления страницы не убирался блок с товарами. Думаю если просто вставить в xsl шаблон таблицы с товарами вместо надписи - заказанных товаров нет, это будет не правильно. И чтобы письма не отправлялись после каждого обновления страницы.

И сразу еще вопрос, чтобы не создавать лишние темы.
В корзине на странице с информацией об оформленом заказе вот такая ошибка. Как исправить?


Предупреждение: DOMDocument::loadXML() [<a href='domdocument.loadxml'>domdocument.loadxml</a>]: StartTag: invalid element name in Entity, line: 169 в файле /home/httpd/vhosts/xn--72-6kcu8aqic7a8g.xn--p1ai/httpdocs/modules/xsl/processor/xslt.php (строка 39)
Как жить после? Только лучше чем до...
Модератор
#
Re: корзина - обновление страницы
bastard_ писал(а):
В корзине на странице с информацией об оформленом заказе вот такая ошибка. Как исправить?

Не видя XSL-шаблон, никто не скажет как исправить. А так - синтаксическая ошибка при вызове тега.

bastard_ писал(а):
Подскажите как сделать чтобы после обновления страницы не убирался блок с товарами.

Специально было сделана проверка в ТДС корзины - чтобы при перезагрузке страницы повторно не оформлялся заказ.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: корзина - обновление страницы
Здравствуйте Александр!

ОплатаПриПолучении

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:hostcms="http://www.hostcms.ru/"
   exclude-result-prefixes="hostcms">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <xsl:decimal-format name="my" decimal-separator="." grouping-separator=" "/>
   
   <xsl:template match="/shop">
      <!-- Строка шага заказа
      <ul class="shop_navigation">
      <li><span>Адрес доставки</span>→</li>
      <li><span>Способ доставки</span>→</li>
      <li><span>Форма оплаты</span>→</li>
      <li class="shop_navigation_current"><span>Данные доставки</span></li>
      </ul>  -->
      
      <h1>Ваш заказ оформлен</h1>
      
      <p>Через некоторое время с Вами свяжется наш менеджер, чтобы согласовать заказанный товар и время доставки.</p>
      
      <xsl:apply-templates select="shop_order"/>
      
      <xsl:choose>
         <xsl:when test="count(shop_order/shop_order_item)">
            <h1>Заказанные товары</h1>
            
            <table class="shop_cart">
               <tr>
                  <th>Товар</th>
                  <th>Количество</th>
                  <th>Цена</th>
                  <th>Сумма</th>
               </tr>
               <xsl:apply-templates select="shop_order/shop_order_item"/>
               <tr class="total">
                  
            <td></td><td></td><td></td><td align="center">Итого:
                  <xsl:value-of select="format-number(shop_order/total_amount,'### ##0.00', 'my')"/><xsl:text> </xsl:text><xsl:value-of select="/shop/shop_order/shop_currency/name"/></td>
               </tr>
            </table>
         </xsl:when>
         <!-- <xsl:otherwise>
         <p><b>Заказанных товаров нет.</b></p>
         </xsl:otherwise> -->
      </xsl:choose>
   </xsl:template>
   
   <!-- Шаблон вывода данных о заказе -->
   <xsl:template match="shop_order">
      
      <h1>Данные доставки</h1>
      
      <p>
<b>ФИО:</b><xsl:text> </xsl:text><xsl:value-of select="surname"/><xsl:text> </xsl:text><xsl:value-of select="name"/><xsl:text> </xsl:text><xsl:value-of select="patronymic"/>
         
         <xsl:if test="phone != ''">
         <br /><b>Телефон:</b><xsl:text> </xsl:text><xsl:value-of select="phone"/>
         </xsl:if>
         
         <xsl:if test="email != ''">
         <br /><b>E-mail:</b><xsl:text> </xsl:text><xsl:value-of select="email"/>
         </xsl:if>
         
         <xsl:if test="fax != ''">
         <br /><b>Факс:</b><xsl:text> </xsl:text><xsl:value-of select="fax"/>
         </xsl:if>
         
         <xsl:variable name="location">, <xsl:value-of select="shop_country/shop_country_location/name"/></xsl:variable>
         <xsl:variable name="city">, <xsl:value-of select="shop_country/shop_country_location/shop_country_location_city/name"/></xsl:variable>
         <xsl:variable name="city_area">, <xsl:value-of select="shop_country/shop_country_location/shop_country_location_city/shop_country_location_city_area/name"/></xsl:variable>
         <xsl:variable name="adres">, <xsl:value-of select="address"/></xsl:variable>
         
   <br /><b>Адрес доставки:</b><xsl:text> </xsl:text><xsl:if test="postcode != ''"><xsl:value-of select="postcode"/>, </xsl:if>
         <xsl:if test="shop_country/name != ''">
            <xsl:value-of select="shop_country/name"/>
         </xsl:if>
         <xsl:if test="$location != ', '">
            <xsl:value-of select="$location"/>
         </xsl:if>
         <xsl:if test="$city != ', '">
            <xsl:value-of select="$city"/>
         </xsl:if>
         <xsl:if test="$city_area != ', '">
            <xsl:value-of select="$city_area"/>&#xA0;район</xsl:if>
         <xsl:if test="$adres != ', '">
            <xsl:value-of select="$adres"/>
         </xsl:if>
         
         <xsl:if test="shop_delivery/name != ''">
         <br /><b>Тип доставки:</b><xsl:text> </xsl:text><xsl:value-of select="shop_delivery/name"/>
         </xsl:if>
         
         <xsl:if test="description != ''">
         <br /><b>Комментарий:</b><xsl:text> </xsl:text><xsl:value-of select="description"/>
         </xsl:if>
         
         <xsl:if test="shop_payment_system/name != ''">
         <br /><b>Способ оплаты:</b><xsl:text> </xsl:text><xsl:value-of select="shop_payment_system/name"/>
         </xsl:if>
         
      </p>
   </xsl:template>
   
   <!-- Данные о товарах -->
   <xsl:template match="shop_order/shop_order_item">
      <tr align="center">
         <td class="ssilki_cart">
            <xsl:choose>
               <xsl:when test="shop_item/url != ''">
                  <a href="http://{/shop/site/site_alias/name}{shop_item/url}">
                     <div class="border_none"><img src="{shop_item/dir}{shop_item/image_small}" /></div>
                     <xsl:value-of disable-output-escaping="yes" select="name"/>
                  </a>
               </xsl:when>
               <xsl:otherwise>
                  <xsl:value-of disable-output-escaping="yes" select="name"/>
               </xsl:otherwise>
            </xsl:choose>
         </td>
         
         <td>
            <xsl:value-of select="quantity"/><xsl:text> </xsl:text><xsl:value-of select="shop_item/shop_measure/name"/>
         </td>
         <td style="white-space: nowrap">
            <xsl:value-of select="format-number(price,'### ##0.00', 'my')"/><xsl:text> </xsl:text><xsl:value-of select="/shop/shop_order/shop_currency/name" disable-output-escaping="yes" />
         </td>
         <td style="white-space: nowrap">
            <xsl:value-of select="format-number(quantity * price,'### ##0.00', 'my')"/><xsl:text> </xsl:text><xsl:value-of select="/shop/shop_order/shop_currency/name" disable-output-escaping="yes" />
         </td>
      </tr>
   </xsl:template>
</xsl:stylesheet>


А по поводу перезагрузке страницы, у меня все же при каждой перезагрузке оформляется новый заказ.
ТДС Интернет-магазин корзина

<?php

$Shop_Cart_Controller_Show = Core_Page::instance()->object;

$oShop = $Shop_Cart_Controller_Show->getEntity();

// ------------------------------------------------
// Подготовка редиректа для PayPal
// ------------------------------------------------
if (isset($_REQUEST['paymentType']))
{
   // Получаем ID заказа
   $order_id = intval(Core_Array::getRequest('order_id'));

   $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id);

   if (!is_null($oShop_Order->id))
   {
      // Вызов обработчика платежной системы
      Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System)
         ->shopOrder($oShop_Order)
         ->paymentProcessing();
   }
}

// ------------------------------------------------
// Обработка уведомления об оплате от RBK Money
// ------------------------------------------------
if ((isset($_POST['paymentStatus']) || isset($_GET['PayPalOrderConfirmation'])) && !isset($_REQUEST['paymentType']))
{
   // Получаем ID заказа
   $order_id = intval(Core_Array::getPost('orderId'));

   $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id);

   if (!is_null($oShop_Order->id))
   {
      // Вызов обработчика платежной системы
      Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System)
         ->shopOrder($oShop_Order)
         ->paymentProcessing();
   }
}

// ------------------------------------------------
// Обработка уведомления об оплате от WebMoney
// ------------------------------------------------
if (isset($_POST['LMI_PAYEE_PURSE']))
{
   // Получаем ID заказа
   $order_id = intval(Core_Array::getPost('LMI_PAYMENT_NO'));

   $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id);

   if (!is_null($oShop_Order->id))
   {
      // Вызов обработчика платежной системы
      Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System)
         ->shopOrder($oShop_Order)
         ->paymentProcessing();
   }
}

// ------------------------------------------------
// Обработка уведомления об оплате от ROBOKASSA
// ------------------------------------------------
if (isset($_REQUEST['SignatureValue']) && isset($_REQUEST['Culture']))
{
   // Получаем ID заказа
   $order_id = intval(Core_Array::getRequest('InvId'));

   $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id);

   if (!is_null($oShop_Order->id))
   {
      // Вызов обработчика платежной системы
      Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System)
         ->shopOrder($oShop_Order)
         ->paymentProcessing();
   }
}
// ------------------------------------------------

// ------------------------------------------------
// Обработка уведомления об оплате от Authorize.net
// ------------------------------------------------
if (isset($_POST['x_response_code']))
{
   // Получаем ID заказа
   $order_id = intval(Core_Array::getPost('order_id'));

   $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id);

   if (!is_null($oShop_Order->id))
   {
      // Вызов обработчика платежной системы
      Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System)
         ->shopOrder($oShop_Order)
         ->paymentProcessing();
   }
}

// ------------------------------------------------
// Обработка формы "Оплата через систему QIWI Кошелек"
// ------------------------------------------------
if (isset($_POST['qiwi_payment_options']))
{
   // Получаем ID заказа
   $order_id = intval(Core_Array::getPost('order_id'));

   $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id);

   if (!is_null($oShop_Order->id))
   {
      // Вызов обработчика платежной системы
      Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System)
         ->shopOrder($oShop_Order)
         ->paymentProcessing();
      return TRUE;
   }
}

// ------------------------------------------------
// Вывод информации о статусе платежа после его совершения и перенаправления с платежной системы
// ------------------------------------------------
if (isset($_REQUEST['payment']) || (isset($_GET['action']) && ($_GET['action'] == 'PaymentSuccess' || $_GET['action'] == 'PaymentFail')))
{
   // Получаем ID заказа
   if (isset($_REQUEST['order_id']))
   {
      $order_id = intval(Core_Array::getRequest('order_id'));
   }
   //от Яндекса
   elseif(isset($_GET['orderNumber']))
   {
      $order_id = intval(Core_Array::getGet('orderNumber'));
   }
   else
   {
      $order_id = intval(Core_Array::getRequest('InvId'));
   }

   $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id);

   if (Core::moduleIsActive('siteuser'))
   {
      $siteuser_id = 0;

      $oSiteuser = Core_Entity::factory('Siteuser')->getCurrent();
      if ($oSiteuser)
      {
         $siteuser_id = $oSiteuser->id;
      }
   }
   else
   {
      $siteuser_id = FALSE;
   }

   // Если заказ принадлежит текущему авторизированному пользователю
   if ($oShop_Order->siteuser_id == $siteuser_id)
   {
      if (Core_Array::getRequest('payment') == 'success' || Core_Array::getRequest('action') == 'PaymentSuccess')
      {
         ?><h1>Подтверждение платежа</h1>
         <p>Спасибо, информация об оплате заказа <strong>№ <?php echo $oShop_Order->invoice?></strong>
получена.</p>
         <?php
      }
      else
      {
         ?><h1>Платеж не получен</h1>
         <p>К сожалению при оплате заказа <strong>№ <?php echo $oShop_Order->invoice?></strong> произошла ошибка.</p>
         <?php
      }
   }
   // Для случаев, когда отключен модуль "Пользователи сайта"
   elseif ($siteuser_id === FALSE)
   {
      ?><h1>Подтверждение платежа</h1>
      <p>Благодарим за посещение нашего магазина!</p>
      <?php
   }
   else
   {
      ?><h1>Ошибка</h1>
      <p>Неверный номер заказа!</p>
      <?php
   }

   // Прерываем выполнение типовой динамической страницы
   return TRUE;
}

$xslName = Core_Array::get(Core_Page::instance()->libParams, 'cartXsl');

switch (Core_Array::getPost('recount') ? 0 : Core_Array::getPost('step'))
{
   // Адрес доставки
   case 1:
      // Сбрасываем информацию о последнем заказе
      $_SESSION['last_order_id'] = 0;

      $Shop_Address_Controller_Show = new Shop_Address_Controller_Show($oShop);

      $Shop_Address_Controller_Show->xsl(
            Core_Entity::factory('Xsl')->getByName(
               Core_Array::get(Core_Page::instance()->libParams, 'deliveryAddressXsl')
            )
         )
         ->show();
   break;
   // Способ доставки
   case 2:
      $_SESSION['hostcmsOrder']['shop_country_id'] = intval(Core_Array::getPost('shop_country_id', 0));
      $_SESSION['hostcmsOrder']['shop_country_location_id'] = intval(Core_Array::getPost('shop_country_location_id', 0));
      $_SESSION['hostcmsOrder']['shop_country_location_city_id'] = intval(Core_Array::getPost('shop_country_location_city_id', 0));
      $_SESSION['hostcmsOrder']['shop_country_location_city_area_id'] = intval(Core_Array::getPost('shop_country_location_city_area_id', 0));
      $_SESSION['hostcmsOrder']['postcode'] = strval(Core_Array::getPost('postcode'));
      $_SESSION['hostcmsOrder']['address'] = strval(Core_Array::getPost('address'));
      $_SESSION['hostcmsOrder']['surname'] = strval(Core_Array::getPost('surname'));
      $_SESSION['hostcmsOrder']['name'] = strval(Core_Array::getPost('name'));
      $_SESSION['hostcmsOrder']['patronymic'] = strval(Core_Array::getPost('patronymic'));
      $_SESSION['hostcmsOrder']['company'] = strval(Core_Array::getPost('company'));
      $_SESSION['hostcmsOrder']['phone'] = strval(Core_Array::getPost('phone'));
      $_SESSION['hostcmsOrder']['fax'] = strval(Core_Array::getPost('fax'));
      $_SESSION['hostcmsOrder']['email'] = strval(Core_Array::getPost('email'));
      $_SESSION['hostcmsOrder']['description'] = strval(Core_Array::getPost('description'));

      $Shop_Delivery_Controller_Show = new Shop_Delivery_Controller_Show($oShop);

      $Shop_Delivery_Controller_Show
         ->shop_country_id($_SESSION['hostcmsOrder']['shop_country_id'])
         ->shop_country_location_id($_SESSION['hostcmsOrder']['shop_country_location_id'])
         ->shop_country_location_city_id($_SESSION['hostcmsOrder']['shop_country_location_city_id'])
         ->shop_country_location_city_area_id($_SESSION['hostcmsOrder']['shop_country_location_city_area_id'])
         ->couponText(Core_Array::get(Core_Array::get($_SESSION, 'hostcmsOrder', array()), 'coupon_text'))
         ->setUp()
         ->xsl(
            Core_Entity::factory('Xsl')->getByName(
               Core_Array::get(Core_Page::instance()->libParams, 'deliveryXsl')
            )
         )
         ->show();
   break;
   // Форма оплаты
   case 3:
      $_SESSION['hostcmsOrder']['shop_delivery_condition_id'] = intval(Core_Array::getPost('shop_delivery_condition_id', 0));

      $Shop_Payment_System_Controller_Show = new Shop_Payment_System_Controller_Show($oShop);

      $Shop_Payment_System_Controller_Show
         ->xsl(
            Core_Entity::factory('Xsl')->getByName(
               Core_Array::get(Core_Page::instance()->libParams, 'paymentSystemXsl')
            )
         )
         ->show();
   break;
     // Окончание оформления заказа
    case 4:
       // Сбрасываем информацию о последнем заказе
       $_SESSION['last_order_id'] = 0;  
       $shop_payment_system_id = $_SESSION['hostcmsOrder']['shop_payment_system_id'] = 1;//id используемой платежной системы
       $_SESSION['hostcmsOrder']['shop_delivery_condition_id'] = intval(Core_Array::getPost('shop_delivery_condition_id', 0));
      
       $_SESSION['hostcmsOrder']['address'] = strval(Core_Array::getPost('address'));
       $_SESSION['hostcmsOrder']['surname'] = strval(Core_Array::getPost('surname'));
       $_SESSION['hostcmsOrder']['name'] = strval(Core_Array::getPost('name'));
       $_SESSION['hostcmsOrder']['patronymic'] = strval(Core_Array::getPost('patronymic'));
       $_SESSION['hostcmsOrder']['company'] = strval(Core_Array::getPost('company'));
       $_SESSION['hostcmsOrder']['phone'] = strval(Core_Array::getPost('phone'));      
       $_SESSION['hostcmsOrder']['email'] = strval(Core_Array::getPost('email'));
       $_SESSION['hostcmsOrder']['fax'] = strval(Core_Array::getPost('fax'));
       $_SESSION['hostcmsOrder']['description'] = strval(Core_Array::getPost('description'));
      
       // Если выбрана платежная система
       if ($_SESSION['hostcmsOrder']['shop_payment_system_id'])
       {

          Shop_Payment_System_Handler::factory(
             Core_Entity::factory('Shop_Payment_System', $shop_payment_system_id)
          )
          ->orderParams($_SESSION['hostcmsOrder'])
          ->execute();
       }
       else
       {
          ?><h1>Ошибка! Не указана ни одна платежная система.</h1><?php
       }
    break;
   default:
      $Shop_Cart_Controller_Show
         ->couponText(Core_Array::get(Core_Array::get($_SESSION, 'hostcmsOrder', array()), 'coupon_text'))
         ->xsl(
            Core_Entity::factory('Xsl')->getByName($xslName)
         )
         ->show();
}

// Блок авторизации пользователя
if (Core::moduleIsActive('siteuser'))
{
   $oSiteuser = Core_Entity::factory('Siteuser')->getCurrent();

   if (is_null($oSiteuser))
   {
      // Авторизация
      $Siteuser_Controller_Show = new Siteuser_Controller_Show(
         Core_Entity::factory('Siteuser')
      );

      $Siteuser_Controller_Show
         ->location(Core::$url['path'])
         ->xsl(
            Core_Entity::factory('Xsl')->getByName(Core_Array::get(Core_Page::instance()->libParams, 'userAuthorizationXsl'))
         )
         ->show();

      // Регистрация
      $Siteuser_Controller_Show = new Siteuser_Controller_Show(
         Core_Entity::factory('Siteuser')
      );

      $Siteuser_Controller_Show->xsl(
            Core_Entity::factory('Xsl')->getByName(Core_Array::get(Core_Page::instance()->libParams, 'userRegistrationXsl'))
         )
         ->location(Core::$url['path'])
         ->fastRegistration(TRUE)
         ->properties(TRUE)
         //->showMaillists(TRUE)
         ->show();
   }
}
Как жить после? Только лучше чем до...
Модератор
#
Re: корзина - обновление страницы
Если у Вас коммерческая редакция - напишите в поддержку. Посмотрим на месте. Анализировать простыню кода, к сожалению, возможности нет.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: корзина - обновление страницы
Пока бесплатной хватает. Ладно пойду верну все шаги корзины обратно, попробую разобраться.
Как жить после? Только лучше чем до...
Авторизация