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

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Sumrakrnd

Страницы: [1] 2 3 ... 21
1
Доброго времени суток.

Как правильно написать условие для сравнения двух дат?
В частности текущую и которая стоит в поле....
			
<xsl:variable name="time" select=".//property[@name='publish_time']/value/@unix-timestamp" />
<xsl:variable name="date_item" select="document(concat('udata://system/convertDate/', $time, '/(d.m.Y%20(H:i))'))/udata" />

<xsl:variable name="curr_date" select="document('udata://system/convertDate/now/U/(d.m.Y%20(H:i))')/udata" />
<xsl:variable name="date_now" select="document(concat('udata://system/convertDate/',$curr_date, '/(d.m.Y%20(H:i))'))/udata" />

<xsl:if test="$date & gt;= $date_now">
<xsl:value-of select="$date_now" />
</xsl:if>

2
А скажите, где описывается функция
basket.putElement(id, options, this.replace(id));

В basket.js она вызывается только. Надо просто убрать замену на слово добавить

3
Я бы предложил сделать это так:
- список товаров, которые можно купить и поля типа кол-ва вывести макросом для вывода товаров catalog getSmartCatalog()
- поля для ввода персональной информации и прочей информации важной для заказа (способ оплаты на вашем скриншоте) через макрос 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) &gt; 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


Что не так? Т_Т

4
Сейчас попробую переделать xslt.

И отпишусь чего получится =)

Спасибо *^_^*

5
О еще!

Можно сделать, чтобы в полном описании товара, нажимая на кнопку приобрести не менялась надпись "добавлено в корзину <кол-во>", а чтобы перекидывало в корзину?

А то я нашла такой способ под tpl, попробовала перековырять его на xslt, но что-то пошло не так ><

6
Sumrakrnd, я бы предложил немного другой подход.

По сути у вас 2 задачи:
- положить товары в корзину в указанном кол-ве
- заполнить информацию необходимую для оформления заказа и оформить его.

Я бы предложил сделать это так:
- список товаров, которые можно купить и поля типа кол-ва вывести макросом для вывода товаров catalog getSmartCatalog()
- поля для ввода персональной информации и прочей информации важной для заказа (способ оплаты на вашем скриншоте) через макрос emarket purchasing_one_step()

Это позволит вам получить именно ту картинку, как вы и приложили в вашем вопросе.
Т.е. просто сделать вывод каталога через getSmartCatalog, как я сделала (но не там немного), а в <xsl:template match="udata[@method = 'cart'][count(items/item) &gt; 0]"/> и там же сделать запрос на вывод purchasing_one_step() ?

Тогда метод getCreateForm не нужен, так?


Далее, осталось решить вопрос, как соединить функционал добавление\изменение кол-ва товара в корзине и сохранение данных для заказа на одной странице.
Тут есть несколько похожих вариантов, но я бы остановился на таком:
- все манипуляции с товарами типа отметка товара (фактически добавление товара в корзину), изменение его кол-ва или отмена выбора товара (фактически удаление товара из корзины) делать через js механизм работы с корзиной. То есть, отметил товар - через js положил его в корзину, изменил кол-во - через js изменил кол-во в корзине и т.д.
- оформление корзины происходит при нажатии на кнопку "подтвердить". При этом в корзине уже что-то лежит, а поля с информацией о заказе оформлены.
А какой js относится к корзине получается?
Можно тогда будет выбирать/убирать товар и менять его кол-во сразу находясь в корзине, так?



P.S. чтобы макрос emarket purchasing_one_step() не выводил вам поля для доставки, в настройках модуля "Интернет-магазин" отключите этот шаг.
Это я отключила =)

7
Доброго времени суток.

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

Сперва я для примера вывела форму по типу данных, которые относятся к Абонементам, у меня это 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 чтобы такое было?

8
Доброго времени суток.

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

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

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

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

9
Поменяла (-m) на (+1d-1d) вдруг не правильно что.
в-первой вкладке при +10d-5d должны быть новости не старше 5 дней и не более, чем на 10 дней от текущей даты ,так?
во-второй вкладке при (+1d-1d) должны быть новости по схеме завтра-сегодня-вчера, правильно?

Но во-второй вкладке все равно захватываются те новости, которые будут через три дня или были три дня назад

10
Ууу... сейчас буду пробовать этот способ.
Только вопрос, можно вместо даты публикации ориентироваться на дату завершения скидки?
А то например, не все новости должны попадать в прошедшие события...
вы можете сравнивать с любым полем типа дата, тут основной момент был в том, что идет сравнения текущей даты и даты из какого-то поля (просто дату из поля вытягивайте через extProps при вызове макроса со списком новостей)


Так... я наконец добралась снова до новостей сайта..

Я сделала вот такие запросы... Но что-то не так, только вот что?

Т.к. в обоих вкладках выводится одни и те же новости...
Хотя есть новости и этого числа и прошлогодние..

	<xsl:template match="result[@module = 'news'][@method = 'rubric']">

<xsl:apply-templates select="document('udata://news/lastlents/(alls-news)/notemplate/10/1/')"/>

<div class="tabs">
<xsl:apply-templates select="total" />
<ul class="tabs__caption">
<li class="active">Грядущие события</li>
<li>прошедшие мероприятия</li>
</ul>

<div class="tabs__content active">
<xsl:apply-templates select="total" />
<xsl:apply-templates select="document(concat('udata://news/lastlist/', '(1090)(1091)(1092)(1093)(1094)(1095)(1096)', '//5/(+10d-5d)/?extProps=publish_time,h1,content,news_image,anons'))/udata"
mode="upcoming" />
</div>
<div class="tabs__content">
<xsl:apply-templates select="total" />
<xsl:apply-templates select="document(concat('udata://news/lastlist/', '(1090)(1091)(1092)(1093)(1094)(1095)(1096)', '//5/(-m)/?extProps=publish_time,h1,content,news_image,anons'))/udata"
mode="pastevents" />
</div>
</div>

</xsl:template>

И пагинация не включается...

11
Доброго времени

Пытаюсь разобраться
Нашла вот такие статьи, но очень мало со стороны xslt шаблона информации...
http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/zapis_na_priem/
http://help.docs.umi-cms.ru/rabota_s_modulyami/modul_zapis_na_priem/

Есть еще какие-то источники по данному модулю?

Просто например, можно к Сотруднику привязать Услугу и наоборот к Услуге - Сотрудника?

12
Возникла проблема:
На старом сайте работает вывод заголовка (в данном случае "Советы") http://ott.cv65275.tmweb.ru/science/council/learned-council/
Перенесли на другой хостинг сперва все работало, а сейчас заметила, что заголовок не выводится...
http://dev.ott.ru/science/council/learned-council/

А тут работает http://dev.ott.ru/science/research-work/

Вот такой  xsl:
			<div class="title-h1">
<a href="#" class="back" data-tool="Вернуться"></a>

<xsl:variable name="h1_id" select="document(concat('upage://', page/@parentId, .//property/value/page/@id))" />

<h1>
<xsl:value-of select="$h1_id//property[@name = 'h1']/value" />
</h1>

</div>
Скрин структуры, если нужен

13
Ух... нашла
Оказывается есть такой запрос:

   
<xsl:apply-templates select="document(concat('udata://users/viewAuthor/', @author_id))/udata"/>

14
Пагинацию тоже смогла разобраться


Помогите с выводом имени пользователя из поля Т_Т

15
Проблему с датой решила, откопала вот такое обращение:
			<span class="date" umi:field-name="publish_time" itemprop="datePublished">
<xsl:attribute name="content">
<xsl:call-template name="format-date">
<xsl:with-param name="date" select="@publish_time" />
<xsl:with-param name="pattern" select="'Y-m-d'" />
</xsl:call-template>
</xsl:attribute>
<xsl:call-template name="format-date">
<xsl:with-param name="date" select="@publish_time" />
</xsl:call-template>
</span>

Страницы: [1] 2 3 ... 21