Реальный пример файла cart_design.xml (должен находиться в Templates). Он немного сложноват, на первый взгляд, но если отбросить все лишние условия, предназначенные для красивого отображения таблицы, суть окажется достаточно простой. Еще более простой пример данного файла можно найти в демо-сайте интернет-магазина.
<?xml version="1.0" encoding="windows-1251" ?>
<control-document>
<cartdesign id="basket">
<header><![CDATA[
<TABLE CELLSPACING="0" CELLPADDING="7" BORDER="0" WIDTH=100% id="basket"> <TR><TH>Наименование</TH><TH>Артикул</TH><TH >Цвет</TH><TH>Количество</TH><TH>Цена</TH><TH>Сумма</TH><TH>Удалить</TH></TR> <tr><td colspan=7 ></td></tr>
]]>
</header>
<delimiter><![CDATA[
<tr><td colspan=7></td></tr>
]]>
</delimiter>
<item><![CDATA[
<TR><TD><TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0" WIDTH=100% > <tr> <td> $Text[source: "<A HREF="/catalog/?sid=2EA3D9CF1C3B49C8B28881B147388D24&iid=$Attribute:id$">$Thumbnail [source: "$Attribute:image$"; output_as: jpg; width: 106; height: 106; mode: bound; nocache: yes; params: " alt='$Attribute:title$' border=0"]$</A></td> <td width="100%"><A HREF="/catalog/?sid=2EA3D9CF1C3B49C8B28881B147388D24&iid=$Attribute:id$"><B>$Attribute:title$</B></A>"; antisource: " <A HREF="/sales/?sid=2EA3D9CF1C3B49C8B28881B147388D24&iid=$Attribute:id$">$Thumbnail [source: "$DataField[source: "catalogitems"; filter: id=$Attribute:id$; field: image]$"; output_as: jpg; width: 106; height: 106; mode: bound; nocache: yes; params: " alt='$DataField[source: "catalogitems"; filter: id=$Attribute:id$; field: title]$' border=0"]$</A></td> <td width="100%"><A HREF="/sales/?sid=2EA3D9CF1C3B49C8B28881B147388D24&iid=$Attribute:id$"><B>$DataField[source: "catalogitems"; filter: id=$Attribute:id$; field: title]$</B></A> "; condition: $Attribute:title$!=,]$ </td> </tr> </table> </TD>
<TD NOWRAP align="center"><span>$Text[source: "$Attribute:articul$"; antisource: "$DataField[source: "catalogitems"; filter: id=$Attribute:id$; field: articul]$"; condition: $Attribute:articul$!=,]$</span></TD> <TD NOWRAP align="center" >$Cart:color$<br></TD>
<TD NOWRAP align="center" > <TABLE cellpadding=0 cellspacing=0 border=0> <TR> <TD valign=top align=center><INPUT id="scq_$Attribute:id$" value="$Cart:quantity$" size=8 maxlength=5 onchange="document.getElementById('td_$Attribute:id$').style.display='block'" onkeydown="document.getElementById('td_$Attribute:id$').style.display='block'"></TD> </TR> <TR> <TD id="td_$Attribute:id$"><A HREF="javascript:ChangeQuantity('$Attribute:id$$Cart:color$', document.getElementById('scq_$Attribute:id$').value, '$Multiply[left: $Variable[exchange_rate]$; right: $Attribute:price$; digits: 2]$')">сохранить</A></TD> <TR> </TABLE>
</TD>
<TD NOWRAP align="center" ><span>$Text[source: "$Attribute:price$"; condition: $Attribute:sale$!=on]$$Text[source: "$Attribute:discount$"; condition: $Attribute:sale$=on]$</span> руб.<BR></TD> <TD NOWRAP align="center" ><span>$Multiply[left: $Cart:price$; right: $Cart:quantity$; digits: 2]$</span> руб.<BR></TD>
<td valign=center align="center"> <A HREF="javascript:delItem('$Attribute:id$$Cart:color$')" title="удалить товар из корзины">удалить</A></td> </TR>
]]>
</item>
<footer><![CDATA[
</TABLE> <br><div align="right"><B>Сумма к оплате:</B> <span>$Cart:total$</span> руб.</div><br>
<div><A HREF="/catalog/">Продолжить выбор</a></div> <div><A HREF="/buy">Перейти к оформлению заказа</A></div>
]]>
</footer>
<empty><![CDATA[
Ваша корзина пуста. Вы можете продолжить выбор товаров в нашем <a href="/catalog/">Интернет-магазине</a>.
]]>
</empty>
</cartdesign>
</control-document>
Как видно из примера, корзина отрисовывается полностью аналогично, как это делает макрос News, только вместо таблицы в качестве источника данных используется набор данных из корзины (из cookies). При переборе элементов корзины по очереди отрисовывается секция item, которая перемежается delimiter'ом. header/footer добавляются в начале и конце, соответственно. Если корзина пуста - рисуется секция empty.