Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

Sumrakrnd

  • ****
  • 305
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Доброго времени суток.

По дизайну сделано, что список товаров из каталога, являются частью корзины.

Есть список товаров каталога в виде checkbox, которые выбираются и "добавляются" в корзину, так же выбирается кол-во.
А ниже сразу же заполняются данные: ФИО, Телефон, E-mail и Способ оплаты...

Как можно реализовать это в обход привычных шагов? Какие запросы и как использовать?
Просто такой не стандартный вид  :(

Приложу скриншот дизайна...

*

Sumrakrnd

  • ****
  • 305
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Как объеденить каталог и форму оплаты?
« Ответ #1 : Сегодня в 13:36:00 »
Доброго времени суток.

Попыталась сделать вот такое

Сперва я для примера вывела форму по типу данных, которые относятся к Абонементам, у меня это 185.
<xsl:apply-templates select="document('udata://data/getCreateForm/185/notemplate/(cenovye_svojstva)')/udata" mode="to-pay-form"/>
Я так поняла, могу создать форму с соответствующими полями и просто сюда вызвать так?

А вот дальше пошел на мой взгляд бред, но я просто не смогла придумать ничего другого
(это всего второй раз когда я делаю интернет магазин, и то он не стандартный)

Обращаюсь к методу getCreateForm
Пока оставляю group/field, вызов полей у меня получился, но пока они мне не нужны (надо понять нужна сюда отдельная форма или нет)
И добавила вызов корзины.

<xsl:template match="udata[@method='getCreateForm']" mode="to-pay-form">
<form class="to-pay-form" enctype="multipart/form-data" method="post" action="/{udata/group/@lang}/emarket/getOneClickOrder/">

<xsl:apply-templates select="document('udata://emarket/cart')/udata" mode="to-pay-cart" /> <!-- вызвала корзину -->


<xsl:apply-templates select="group/field" mode="to-pay-field"/> <!-- пока просто висит, не использовала -->

</form>
</xsl:template>

Но тут возникла проблема, когда в корзине ничего нет, то она не отображает товар по стандарту.
Т.к. если один абонемент выбран, чтобы выбрать другой, нужно вернутся в каталог, а мне надо делать добавление нового абонемента прямо из списка внутри корзины..

В итоге в корзине, когда ничего выбрано изначально я сделала вызов каталога >_<
	<xsl:template match="udata[@method = 'cart']" mode="to-pay-cart" >
<div class="delivery_address_c">
<div class="basket">
<xsl:apply-templates select="document(concat('udata://catalog/getSmartCatalog/notemplate/',(639),'///10/'))/udata" mode="season-tickets-cart" />
</div>
</div>
</xsl:template>

<!-- КАТАЛОГ ДЛЯ РАЗДЕЛА ОПЛАТИТЬ -->
<xsl:template match="udata[@method='getSmartCatalog']" mode="season-tickets-cart" >
<p>Выберите услуги:</p>
<xsl:apply-templates select="lines/item" mode="getSmartCatalog-cart" />
</xsl:template>

<xsl:template match="item" mode="getSmartCatalog-cart">
<xsl:if test="not(document(concat('upage://', @id, '.coming_soon'))//value)">
<label>
<input class="checkbox" type="checkbox" name="checkbox" />
<input type="button" class="choose-btn" value="выбрать" required="required" />
<div class="form-group month-section">
<input type="text" value="{amount}" class="amount" />
<input type="hidden" value="{amount}" />
<span class="change-amount">
<img class="top" src="/templates/zvezdydetyam/images/amount-top.png"/>
<img class="bottom" src="/templates/zvezdydetyam/images/amount-bottom.png"/>
</span>
</div>
<span class="label">
Абонемент
<xsl:value-of select="document(concat('upage://', @id, '.h1'))//value" />
<xsl:text> </xsl:text>
<xsl:text>(1 месяц - </xsl:text>
<xsl:value-of select="document(concat('upage://', @id, '.price'))//value" />
<xsl:text> </xsl:text>
<xsl:value-of select="$currency-prefix" />
<xsl:value-of select="$currency-suffix" />
<xsl:text>.)</xsl:text>
</span>
</label>
</xsl:if>
<xsl:if test="document(concat('upage://', @id, '.coming_soon'))//value">
<label class="disable">
<span class="label">
Абонемент
<xsl:text> </xsl:text>
<xsl:value-of select="document(concat('upage://', @id, '.h1'))//value" />
</span>
</label>
</xsl:if>
</xsl:template>
<!-- ///КАТАЛОГ ДЛЯ РАЗДЕЛА ОПЛАТИТЬ -->


И сделала корзину, если уже есть выбранный абонемент, но получается, что список каталога исчезнет...

   
<xsl:template match="udata[@method = 'cart'][count(items/item) &gt; 0]" mode="to-pay-cart" >
<div class="basket">
<p>Выберите услуги:</p>

<xsl:apply-templates select="items/item" mode="to-pay-cart-item" />

<div class="cart-buttons">
<a href="{$lang-prefix}{$purchase-method}" class="basket_purchase size2 more btn btn-default confirmation-btn">
<xsl:text>подтвердить</xsl:text>
</a>
</div>
</div>
</xsl:template>

<xsl:template match="udata[@method = 'cart']//item" mode="to-pay-cart-item" >
<label class="cart_item_{@id}">
<input class="checkbox" type="checkbox" name="checkbox" />
<input type="button" class="choose-btn" value="выбрать" required="required" />

<div class="form-group month-section">
<input type="text" value="{amount}" class="amount" />
<input type="hidden" value="{amount}" />
<span class="change-amount">
<img class="top" src="/templates/zvezdydetyam/images/amount-top.png"/>
<img class="bottom" src="/templates/zvezdydetyam/images/amount-bottom.png"/>
</span>
</div>

<span class="label">
<xsl:value-of select="@name" />
<xsl:text> </xsl:text>
<xsl:text>(1 месяц - </xsl:text>
<xsl:value-of select="price/actual | price/original" />
<xsl:text> </xsl:text>
<xsl:value-of select="$currency-prefix" />
<xsl:value-of select="$currency-suffix" />
<xsl:text>.)</xsl:text>
</span>
</label>
</xsl:template>

<xsl:template match="udata[@method = 'cart']/summary">

<xsl:apply-templates select="price/delivery[.!='']" mode="cart" />

<div class="size2 tfoot">
<xsl:text></xsl:text>
<xsl:value-of select="$currency-prefix" />
<xsl:text> </xsl:text>
<span class="cart_summary size3">
<xsl:apply-templates select="price/actual" />
</span>
<span>
<xsl:text> </xsl:text>
<xsl:value-of select="$currency-suffix" />
<xsl:text>.</xsl:text>
</span>
</div>
</xsl:template>

<xsl:template match="delivery[.!='']" mode="cart">
<div class="info">
<xsl:text></xsl:text>
<xsl:value-of select="$currency-prefix" />
<xsl:text> </xsl:text>
<xsl:value-of select="." />
<xsl:text> </xsl:text>
<xsl:value-of select="$currency-suffix" />
</div>
</xsl:template>

Сумма работает, кол-во тоже работает, подтверждение даже проходит при заполненной корзине.

НО как совместить это!? Т___Т
Как сделать, чтобы при 0 выбранных абонементов, список каталога не пропадал, а при нажатие на кнопку "Выбрать" товар добавлялся/удалялся?
Или что именно надо доработать в php чтобы такое было?