UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: dmezhenskij от 12 Сентября 2012, 17:27:12

Название: UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 12 Сентября 2012, 17:27:12
Как сделать в UMI CMS корзину в один шаг (xslt)? Если можно расписать подробно
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 12 Сентября 2012, 17:34:08
статьи на wiki.umisoft.ru (http://wiki.umisoft.ru/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F%3ASearch&search=%D0%B2+%D0%BE%D0%B4%D0%B8%D0%BD+%D1%88%D0%B0%D0%B3&go=%D0%9F%D0%B5%D1%80%D0%B5%D0%B9%D1%82%D0%B8) смотрели?
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 12 Сентября 2012, 17:39:44
смотрел, но непонятно начиная с пункта :
"На системной странице /emarket/cart/, либо какой-либо другой, подобным вызовом: udata://emarket/fast_purchasing_xslt/

мы получим все необходимые данные для составления формы оформления заказа, данные будут примерно в следующем виде: "

видел обсуждение по этой теме, но всеодно не понятно.... можно как-то доступно объяснить?
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 12 Сентября 2012, 17:53:16
хм... если описывать все полностью со всеми возможными вопросами, то тут надо отдельный видеоурок писать)
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 12 Сентября 2012, 18:15:39
так может уже есть ?  :D
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 12 Сентября 2012, 18:16:21
помогите, очень надо
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 12 Сентября 2012, 18:31:22
я пока такой не записывал, и судя по загруженности смогу записать только в октябре, если найдете где-нибудь отпишите сюда, чтобы другим было на что посмотреть
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 12 Сентября 2012, 18:41:13
может роспишыте как делать , если все получится с меня ролик  ;)
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 12 Сентября 2012, 18:54:08
Цитировать
хм... если описывать все полностью со всеми возможными вопросами, то тут надо отдельный видеоурок писать)

вопрос как раз во времени, снять видео быстрее чем расписывать)

может что конкретное подсказать что уже сделал, что не получилось и т.д. направлять по конкретике всегда быстрее и вам опыта больше)
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 12 Сентября 2012, 19:08:45
такс...

1.Нам понадобятся дополнительные php-методы для реализации данной задачи, которые необходимо добавить внутри абстрактного класса файла classes/modules/emarket/__custom.php, сами методы следующие:

добавил в код.

2.также в папку classes/modules/emarket/ необходимо добавить файл permissions.custom.php следующего содержания:

создал файл и вставил туда код.

3.На системной странице /emarket/cart/, либо какой-либо другой, подобным вызовом: udata://emarket/fast_purchasing_xslt/

мы получим все необходимые данные для составления формы оформления заказа, данные будут примерно в следующем виде:

на этом этапе куда вставить код? или что делать, где вызывать ?
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 12 Сентября 2012, 19:39:25
подразумевается что необходимо вызвать макрос udata://emarket/fast_purchasing_xslt/ где-то, я обычно вызываю его в шаблоне для корзины, то есть ниже всех товаров у меня стоит вызов данного макроса через xsl:apply-templates конструкцию (по тому же принципы что и вызов макроса для вывода меню content/menu)

Далее, необходимо создать шаблон для обработки результатов макроса udata://emarket/fast_purchasing_xslt/

, попробуй вбить в адресной строке http://свой_сайт/udata://emarket/fast_purchasing_xslt/ и увидишь что там возвращается код который можно развернуть в поля отображающие все шаги покупки
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 12 Сентября 2012, 19:42:56
то есть ты создаешь шаблон по типу того что описывался тут http://umihelp.ru/forum/index.php/topic,1219.msg4407.html#msg4407
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 13 Сентября 2012, 12:48:44
xsltTpls/modules/emarket/cart.xsl - добавляю строку :
"<xsl:apply-templates select="document('udata://emarket/fast_purchasing_xslt/')"/>"

потом в этой же папке создаю файл: fast_purchasing_xslt.xsl
в который добавляю код:
<xsl:template match="/result[@method = 'fast_purchasing_xslt']">
      <xsl:apply-templates select="document('udata://emarket/fast_purchasing_xslt')" mode="onstep"/>
   </xsl:template>
   
   <xsl:template match="udata[@module='emarket' and @method = 'fast_purchasing_xslt']" mode="onstep">
   <form enctype="multipart/form-data" method="post" action="{$lang-prefix}/emarket/saveinfo/">

         <xsl:apply-templates select="document(concat('udata://data/getEditForm/', customer/object/@id))" />

<!-- Выбор способа доставки -->
         <h4>
            <xsl:text>&delivery-agent;:</xsl:text>
         </h4>
         <div class="city">
         <select class="txt" name="city" id="city-id">
               <option value="">--Выберите город--</option>
               <option value="5" dm="447,18628,18606,18979">Санкт-Петербург</option>
               <option value="6" dm="18627,18979,18607,18633">Пригород Санкт-Петербурга и ЛО</option>
               <option value="4" dm="18607,18633">Другой город</option>
         </select>
         </div>
         <div class="sposob_dostavki">
         <dl id="delivery-id">
         <xsl:apply-templates select="delivery_choose/items" mode="delivery-choose" />

</dl>
<script type="text/javascript">
   $(function() {
      $("#city-id").change(function() {
         $("#delivery-id input").attr("disabled", true);
         $("#delivery-id dd").addClass("disabled");
         $("#delivery-address").hide();
         
         if (dm = $(":selected", this).attr("dm")) {
            var validDeliveries = dm.split(",");
            
            for (x in validDeliveries) {
               $("#delivery-" + validDeliveries
               $("#delivery-" + validDeliveries
            }
         }
      });
         
   });
</script>
         </div>
         <!-- /end Выбор способа доставки -->
<!-- Выбор адреса доставки -->
         <div class="delivery_block">
         <h4>
            <xsl:text>&delivery;:</xsl:text>
         </h4>
         <div class="dostavka">
         <xsl:apply-templates select="delivery/items" mode="delivery-address" />
         <script>
         jQuery('#delivery_address').submit(function(){
            var input = jQuery('input:radio:checked', this);
            if (typeof input.val() == 'undefined' || input.val() == 'new') {
               if (typeof input.val() == 'undefined') {
                  jQuery('input:radio[value=new]', this).attr('checked','checked');
               }
               return site.forms.data.check(this);
            }
         });
      </script>   
</div>      
      </div>
      <!-- /end Выбор адреса доставки -->
<!-- Способ оплаты-->
<h4>
         <xsl:text>&payment-type;:</xsl:text>
      </h4>
      <div class="oplata">
      <xsl:apply-templates select="payment/items/item" mode="payment" />
      </div>
         <div style="text-align:center;">
            <input type="submit" class="button" value="&kupit;" />
         </div>
<!-- /end Способ оплаты-->
      </form>
</xsl:template>
я правильно понял?
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 13 Сентября 2012, 12:54:29
да, только два замечания

Цитировать
потом в этой же папке создаю файл: fast_purchasing_xslt.xsl
в который добавляю код:

незабудте подключить этот файл в фале comon.xsl в этой же папке

и код приведенный вами возможне не полностью будет подходит вам, например выбор доставки с выпадающим списком этоя вно кастомная доделка того кто писал этот шаблон (если это вы то все ок ;) )
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 13 Сентября 2012, 15:22:02
сделал... выводится в корзине как "Доставка"... и всё.... что не так ?
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 13 Сентября 2012, 15:24:58
по идеи должно было бы отображаться как тут в корзине www.bebeplay.ru
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 13 Сентября 2012, 16:17:48
все так как надо и выводиться у вас же в шаблоне только инфо о доставке и выводится


<xsl:template match="udata[@module='emarket' and @method = 'fast_purchasing_xslt']" mode="onstep">
   <form enctype="multipart/form-data" method="post" action="{$lang-prefix}/emarket/saveinfo/">

         <xsl:apply-templates select="document(concat('udata://data/getEditForm/', customer/object/@id))" />

после <xsl:apply-templates select="document(concat('udata://data/getEditForm/', customer/object/@id))" /> нужно вывести вызовы для вывода других форм и списков о способах доставки, об адресе, об способе оплаты. Для каждого в demodizzy уже есть шаблоны, но они требуют небольшой переделки, тег форм для них подтягивать не надо и match у шаблонов станет другим
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: dmezhenskij от 17 Сентября 2012, 12:11:21
взял к примеру файл "payment.xsl", скопировал с него код и вставил в файл "fast_purchasing_xslt.xsl"....  безрезультатно  :(
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 21 Сентября 2012, 21:12:58
следите за обновлениями в http://twitter.com/umihelp как только статья о оформлении в один шаг появиться я отпишу об этом в свой twitter
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: Byte от 19 Апреля 2013, 23:32:13
Подскажите пожалуйста как реализовать оформление заказа в один шаг, если у меня отключены в админке системы оплаты и доставки?  при попытке оформить заказ вылезает ошибка с сообщением о том, что не выбран способ оплаты. Может макрос поправить как или input'ов наосовать с какими-то определенными атрибутами? пробовал, что-то не вышло, ошибки лезут
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: john от 25 Мая 2013, 13:18:41
Извечная проблема с оформлением заказа в один шаг.
Было бы неплохо если бы появился видео урок)

1. xsltTpls/modules/emarket/cart.xsl - добавил строку :
<xsl:apply-templates select="document('udata://emarket/fast_purchasing_xslt/')"/>"
Остальное содержимое необходимо удалять?
2. Создал файл fast_purchasing_xslt.xsl с кодом
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/result[@method = 'fast_purchasing_xslt']">
<xsl:apply-templates select="document('udata://emarket/fast_purchasing_xslt')" mode="onstep"/>
</xsl:template>

<xsl:template match="udata[@module='emarket' and @method = 'fast_purchasing_xslt']" mode="onstep">
<form enctype="multipart/form-data" method="post" action="{$lang-prefix}/emarket/saveinfo/">

<xsl:apply-templates select="document(concat('udata://data/getEditForm/', customer/object/@id))" />

<!-- Выбор способа доставки -->
<h4>
<xsl:text>&delivery-agent;:</xsl:text>
</h4>
<div class="city">
<select class="txt" name="city" id="city-id">
<option value="">--Выберите город--</option>
<option value="5" dm="447,18628,18606,18979">Санкт-Петербург</option>
<option value="6" dm="18627,18979,18607,18633">Пригород Санкт-Петербурга и ЛО</option>
<option value="4" dm="18607,18633">Другой город</option>
</select>
</div>
<div class="sposob_dostavki">
<dl id="delivery-id">
<xsl:apply-templates select="delivery_choose/items" mode="delivery-choose" />

</dl>
<script type="text/javascript">
$(function() {
$("#city-id").change(function() {
$("#delivery-id input").attr("disabled", true);
$("#delivery-id dd").addClass("disabled");
$("#delivery-address").hide();

if (dm = $(":selected", this).attr("dm")) {
var validDeliveries = dm.split(",");

for (x in validDeliveries) {
$("#delivery-" + validDeliveries[x]).attr("disabled", false);
$("#delivery-" + validDeliveries[x] + "-description").removeClass("disabled");
}
}
});

});
</script>
</div>
<!-- /end Выбор способа доставки -->
<!-- Выбор адреса доставки -->
<div class="delivery_block">
<h4>
<xsl:text>&delivery;:</xsl:text>
</h4>
<div class="dostavka">
<xsl:apply-templates select="delivery/items" mode="delivery-address" />
<script>
jQuery('#delivery_address').submit(function(){
var input = jQuery('input:radio:checked', this);
if (typeof input.val() == 'undefined' || input.val() == 'new') {
if (typeof input.val() == 'undefined') {
jQuery('input:radio[value=new]', this).attr('checked','checked');
}
return site.forms.data.check(this);
}
});
</script>
</div>
</div>
<!-- /end Выбор адреса доставки -->
<!-- Способ оплаты-->
<h4>
<xsl:text>&payment-type;:</xsl:text>
</h4>
<div class="oplata">
<xsl:apply-templates select="payment/items/item" mode="payment" />
</div>
<div style="text-align:center;">
<input type="submit" class="button" value="&kupit;" />
</div>
<!-- /end Способ оплаты-->
</form>
</xsl:template>
</xsl:stylesheet>
3. Подключил его в файле comon.xsl

Отображается белая страница
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: admin от 26 Мая 2013, 09:55:15
белый лист значит ошибки.... уже не раз обсуждалось http://umihelp.ru/forum/index.php/topic,277.msg6052.html#msg6052
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: john от 26 Мая 2013, 18:23:28
Спасибо, разобрался с ошибками на главной странице, а вот когда перехожу в корзину, ступор.
 
Warning: Missing argument 2 for custom::activmenu() in /home/magiashop/domains/magiashop.ru/public_html/classes/modules/custom.php on line 12

Notice: Undefined variable: id in /home/magiashop/domains/magiashop.ru/public_html/classes/modules/custom.php on line 14

Fatal error: Class 'courierPayment' not found in /home/magiashop/domains/magiashop.ru/public_html/classes/modules/emarket/classes/payment/payment.php on line 41

Раньше с активменю было все норм, сейчас конфликт, почему.
courierPayment?
Версия системы - 2.8.5 на всякий случай
Название: Re:UMI CMS корзина в один шаг (xslt)
Отправлено: zemon от 30 Мая 2013, 04:54:12
Аналогично поддерживаю предложение с уроком по заказу в 1 шаг!!! это уж очень больная тема ... скоро мозггг отмирать начнет а проблема не решена (((