У меня отключен модуль пользователи сайта. На PHP я сделал таким образом.
Динамическая страница "Интернет-магазин корзина":
/* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
if (isset($_POST['step_1_1a']))
{
if ($_POST['site_users_name'] !='' && $_POST['site_users_surname'] !='' && $_POST['site_users_email'] !='' && $_POST['site_users_phone'] !='' && $_POST['site_users_company'] !='')
{
/* Сохраняем данные о пользователе в сессию */
$_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_address'] = to_str($_POST['site_users_address']);
$_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
/* Запоминаем купон */
$_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);
/* Отображаем форму ввода адреса */
$GLOBALS['shops']->ShowAddress(to_str($GLOBALS['LA']['xsl_delivery_address']), $shop_id);
}else
{
$param = array();
foreach ($_POST as $key => $value)
{
$param['item_id'] = $key;
/* Получаем идентификатор записи в корзине по идентификатору пользователя и товара */
$cart_id = $GLOBALS['shops']->GetItemFromCart($shop_id, $site_user, $param['item_id']);
$param['cart_id'] = to_int($cart_id['shop_cart_id']);
$param['user_id'] = $site_user;
$param['shop_id'] = $shop_id;
$param['count'] = to_int($value);
/* Если количество = 0 - удаляем из корзины */
if ($param['count'] == 0)
{
$GLOBALS['shops']->DeleteCart($param);
}
else
{
$GLOBALS['shops']->UpdateCart($param);
}
}
$propertys = array();
$propertys = to_str($_REQUEST['shop_coupon_text']);
$external_propertys = array();
$external_propertys['error'] = "Вы не заполнили все обязательные поля формы!";
$external_propertys['site_users_surname'] = to_str($_POST['site_users_surname']);
$external_propertys['site_users_name'] = to_str($_POST['site_users_name']);
$external_propertys['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$external_propertys['site_users_company'] = to_str($_POST['site_users_company']);
$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']);
$GLOBALS['shops']->ShowCart($shop_id, $site_users_id, to_str($GLOBALS['LA']['xsl_cart']), $propertys, $external_propertys);
}
}
Дальше произвел корректировку в XSL шаблоне "МагазинКорзина":
<!-- Шаблон для корзины -->
<xsl:variable name="recount" select="recount"/>
<xsl:template match="/cart">
<!-- Выводим ошибку (error), если она была передана через внешний параметр -->
<xsl:if test="error != ''">
<div id="error"><xsl:value-of disable-output-escaping="yes" select="error"/></div>
</xsl:if>
...
<!-- В случае если отключен модуль пользователей сайта, запрашиваем информацию
о пользователе сайта здесь --><br /><br />
<table align="center" border="0" cellspacing="0" cellpadding="2">
<tr class="shop_cart_table_title">
<td colspan="2" align="center">Данные о заказчике</td>
</tr>
<tr>
<td>Фамилия<font color="#FF0000">*</font></td>
<td><input name="site_users_surname" type="text" value="{site_users_surname}" size="40"/></td>
</tr>
<tr>
<td>Имя<font color="#FF0000">*</font></td>
<td><input name="site_users_name" type="text" value="{site_users_name}" size="40"/></td>
</tr>
<tr>
<td>Отчество</td>
<td><input name="site_users_patronymic" type="text" value="{site_users_patronymic}" size="40"/></td>
</tr>
<tr>
<td>Компания<font color="#FF0000">*</font></td>
<td><input name="site_users_company" type="text" value="{site_users_company}" size="40"/></td>
</tr>
<tr>
<td>E-mail<font color="#FF0000">*</font></td>
<td><input name="site_users_email" type="text" value="{site_users_email}" size="40"/></td>
</tr>
<tr>
<td>Телефон<font color="#FF0000">*</font></td>
<td><input name="site_users_phone" type="text" value="{site_users_phone}" size="40"/></td>
</tr>
<tr>
<td>Факс</td>
<td><input name="site_users_fax" type="text" value="{site_users_fax}" size="40"/></td>
</tr>
<tr>
<td>Юридический адрес</td>
<td><input name="site_users_address" type="text" value="{site_users_address}" size="40"/></td>
</tr>
</table>
<br/>
<div align="center" style="width:100%">
<font color="#FF0000">*</font> - Обязательные для заполнения поля!!!
</div>
<br/>
<!-- Добавляем скрытое поле с указанием подшага -->
<input name="step_1_1a" type="hidden" value="1"/>
Есть один косяк, если количество товаров в текстовом поле изменят, даже случайно, при ошибке будет произведен пересчет.
И не сделана проверка на корректность e-mail адреса. А в общем работает.