Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Выбор способа оплаты в зависимости от способа доставки

Автор webtrendРаздел JS и AJAX

Ответов: 1
Просмотров: 1517
Последний ответ 23 Марта 2017, 01:17:55
от aghigay
Настройка шаблона письма уведомления о заказе (emarket) XSLT

Автор CanektРаздел Настройка системы и модулей

Ответов: 37
Просмотров: 9142
Последний ответ 12 Сентября 2016, 07:57:36
от admin
НАстройка системных параметров при импорте из 1С (меню, поиск и т.п.)

Автор atachРаздел Custom макросы

Ответов: 3
Просмотров: 3269
Последний ответ 16 Ноября 2012, 16:18:48
от admin
Формирование xml карты сайта. Настройка роботс.тхт

Автор HardHardyРаздел Настройка системы и модулей

Ответов: 9
Просмотров: 10018
Последний ответ 28 Июля 2011, 09:32:17
от HardHardy
Настройка способов оплаты для магазинов, выведенных с umi.ru

Автор e.ioffeРаздел Настройка системы и модулей

Ответов: 0
Просмотров: 1091
Последний ответ 12 Мая 2015, 13:23:02
от e.ioffe

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

*

nibler

  • *
  • 2
  • +0/-0
    • Просмотр профиля
Настройка доставки
« : 17 Марта 2013, 13:10:01 »
Подскажите пожалуйста, как можно сделать чтобы способ доставки менялся в зависимости от города?

Конкретно надо оставить доставку курьером только для Москвы, для остальных городов только доставка почтой!
Спасибо!

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Настройка доставки
« Ответ #1 : 18 Марта 2013, 01:40:59 »
либо в шаблоне поставить проверку в шаблон, который выводит способы доставки, проверяя какой город был выбран на шаге указания адреса доставки, либо вносить доп поле в тип данных для способов оплаты , в котором указывать что данный способ оплаты доступен только для Москвы, а в шаблоне уже проверять это поле и... опять же информацию введенную на странице ввода адреса доставки

*

nibler

  • *
  • 2
  • +0/-0
    • Просмотр профиля
Re:Настройка доставки
« Ответ #2 : 19 Марта 2013, 00:12:08 »
Спасибо, можно подробнее?
Как реализовать проверку города, и в случае, если этот город Москва, добавить способ доставки?
Можете привести пример для xslt шаблона?

P.S. Вопрос довольно актуальный, но нигде не могу найти развернутого ответа.

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Настройка доставки
« Ответ #3 : 19 Марта 2013, 09:17:07 »
Просто этот вопрос относится к разряду тех, что если человек до этого уровня доходит, то ему не нужно особое описание как и что делать, он уже готов справится сам. Это как таблица умножения - пара примеров есть, а остальное уже надо вычитать самим, а не искать готовый ответ для 585855857х577237445.

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

Попробую описать это для XSLT
Когда мы прошли этап выбора адреса, то у нас за пользователем закрепляются наименования товаров, их текущая цена, выбранный тип доставки и т.п.... Закрепляется не за пользователем, а за покупателем. customer
Надо как-то получить эту инфу. Я сейчас отдыхаю от магазинов и максимально кратчайший путь подсказать не смогу, но точно знаю, что один из вариантов - emarket::cart.
После прохождения шага выбора доставки в emarket::cart у нас появляется
Цитировать
<delivery>
<method id="440" name="Самовывоз" xlink:href="uobject://440"/>
<address id="312" name="Address for customer #14" xlink:href="uobject://312">
<index>198262</index>
<region>Ленинградская область</region>
<city>Санкт-Петербург</city>
<street>ул. Большая Пушкарская</street>
<house>2</house>
<flat>44</flat>
</address>
<price name="Российский рубль" code="RUR" rate="1" nominal="1" suffix="руб"/>
</delivery>
Т.е. выполните www.mysite.ru/udata/emarket/cart и увидите там эту инфу.

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

Далее, нам нужно найти XSLT шаблон, описывающий этап выбора доставки. Находится он может /xsltTpls/modules/emarket/purchase/ или в Templates/mysite/..... Это конечно если всё стандартно.

Этап выбора типа доставки в адресной строке пишется как http://mysite.ru/emarket/purchase/delivery/choose/ Впринципе можно сделать выводы, что за xslt шаблон искать.
Находим - у меня он подписан, но возможно это я подписывал когда-то.

Цитировать
<!-- Выбор способа доставки -->
   <xsl:template match="purchasing[@stage = 'delivery'][@step = 'choose']">
........

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

<xsl:apply-templates select="items" mode="delivery-choose" />

1. получаем результат emarket::cart и сохраняем в переменную
<xsl:variable name="city' select="document('udata://emarket/cart')/udata/delivery/address/city"

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

<xsl:choose>
<xsl:when test="$city='москва'">
 ...выводим только нужный тип доставки....
</xsl:when>
<xsl:otherwise>

</xsl:otherwise>
 .... выводим только нужные типы доставки.....
</xsl:choose>

3. Вывод нужного и не нужного типа доставки.
Можно тупо вставить html код - это быстрое решение.
Можно запилить опять же на xslt, но помоему в стандартном функционале тяжело получить список вариантов доставки для наглядного анализа, через udata, а учитывая что до этого уже не получилось дойти - это будет не просто. Там вообщем стандартное дерево items/item, как и всюду.

Выводим к примеру нужным нам тип доставки:
<xsl:apply-templates select="items/item[@id='666']" mode="delivery-choose" />
Т.е.  вывели нужный нам тип доставки с конкретным id-шником. id можно посмотреть в коде, можно в админке в типах данных.
Так же возьмём все кроме конкретно - вот тут я реально не знаю корректно это или нет -
<xsl:apply-templates select="items/item[not(@id='666')]" mode="delivery-choose" />
Но ничто не мешает сделать это через mode="delivery-choose-custom" и там через if убрать ненужный способ.

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Настройка доставки
« Ответ #4 : 20 Марта 2013, 07:12:03 »
Из-за сложности условий и особенностей шаблонов было сделано на jquery

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Re:Настройка доставки
« Ответ #5 : 23 Мая 2013, 23:16:54 »
Подскажите как убрать лишний шаг, выбор способа доставки?
в файле delivery.xsl просто удалил код
<!-- Выбор способа доставки -->....
При оформлении выводит ошибку
"Purchase is in progress: delivery::choose()"

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Настройка доставки
« Ответ #6 : 31 Мая 2013, 13:32:32 »
Подскажите как убрать лишний шаг, выбор способа доставки?
в файле delivery.xsl просто удалил код
<!-- Выбор способа доставки -->....
При оформлении выводит ошибку
"Purchase is in progress: delivery::choose()"


удалили шаблоны после фразы <!-- Выбор способа доставки -->?
тогда в чем вопрос? шаблоны не найдены выводиться более общий шаблон , в данном случае это "Purchase is in progress: delivery::choose()"