Доброго времени суток.
Попыталась сделать вот такое
Сперва я для примера вывела форму по типу данных, которые относятся к Абонементам, у меня это 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) > 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 чтобы такое было?
Я бы предложил сделать это так:
- список товаров, которые можно купить и поля типа кол-ва вывести макросом для вывода товаров catalog getSmartCatalog() (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/katalog/catalog_getsmartcatalog/)
- поля для ввода персональной информации и прочей информации важной для заказа (способ оплаты на вашем скриншоте) через макрос emarket purchasing_one_step() (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/internetmagazin/emarket_purchasing_one_step/)
Вывод каталога сделала в корзине, но вот что-то у меня пошло не так с emarket purchasing_one_step()....
Вот делаю запрос на корзину и на покупку в один шаг:
<xsl:apply-templates select="document('udata://emarket/cart')/udata" mode="to-pay-cart" />
<xsl:apply-templates select="document('udata://emarket/purchasing_one_step')" mode="one-step-cart" />
Я так поняла его внутри корзины делать нельзя... >< (пробовала вообще ничего тогда не выводит по этому запросу)
Это вывод каталога, если товары не выбраны:
<xsl:template match="udata[@method = 'cart']" mode="to-pay-cart" >
<form class="to-pay-form" enctype="multipart/form-data" method="post" action="/{udata/group/@lang}/emarket/getOneClickOrder/">
<div class="delivery_address_c">
<div class="basket">
<!--<h4 class="empty-content"></h4><p></p>-->
<!-- КАТАЛОГ ДЛЯ РАЗДЕЛА ОПЛАТИТЬ без выбранного в корзину -->
<div class="form-group">
<p>Выберите услуги:</p>
<xsl:apply-templates select="document(concat('udata://catalog/getSmartCatalog/notemplate/',(639),'///10/'))/udata" mode="season-tickets-cart" />
</div>
<!-- //КАТАЛОГ ДЛЯ РАЗДЕЛА ОПЛАТИТЬ без выбранного в корзину -->
</div>
</div>
</form>
</xsl:template>
<xsl:template match="udata[@method='getSmartCatalog']" mode="season-tickets-cart" >
<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) > 0]" mode="to-pay-cart" >
<form class="to-pay-form" enctype="multipart/form-data" method="post" action="/{udata/group/@lang}/emarket/getOneClickOrder/">
<div class="basket">
<div class="form-group">
<p>Выберите услуги:</p>
<!-- каталог -->
<xsl:apply-templates select="document(concat('udata://catalog/getSmartCatalog/notemplate/',(639),'///10/'))/udata" mode="season-tickets-cart" />
<!-- корзина -->
<xsl:apply-templates select="items/item" mode="to-pay-cart-item" />
</div>
<div class="summary">
<xsl:apply-templates select="summary" />
</div>
<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>
</form>
</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>
А вот я вывела onestep:
<xsl:template match="result[@module = 'emarket' and @method = 'purchasing_one_step'][udata/onestep]" mode="one-step-cart" >
<form class="without-steps" action="/emarket/saveInfo" method="POST">
<xsl:apply-templates select="udata/onestep/customer" />
<xsl:apply-templates select="udata/onestep/payment" />
<input type="submit" value="подтвердить" class="button big" />
</form>
</xsl:template>
<xsl:template match="result[@module = 'emarket' and @method = 'purchasing_one_step']/udata/onestep/customer">
<div class="customer onestep">
<xsl:apply-templates select="document(concat('udata://data/getEditForm/', @id))" />
</div>
</xsl:template>
<xsl:template match="result[@module = 'emarket' and @method = 'purchasing_one_step']/udata/onestep/payment" />
<xsl:template match="result[@module = 'emarket' and @method = 'purchasing_one_step']/udata/onestep/payment[items/item]">
<div class="payment onestep">
<h4>Способ оплаты:</h4>
<xsl:apply-templates select="items/item" mode="payment_one_step" />
</div>
</xsl:template>
Выводить только: 0 1
Что не так? Т_Т
А скажите, где описывается функция
basket.putElement(id, options, this.replace(id));
В basket.js она вызывается только. Надо просто убрать замену на слово добавить