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

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

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


Сообщения - rellai

Страницы: 1 2 [3] 4
31
Пытаюсь сделать заказ в 1 клик
Переношу с демодизи
На текущий шаблон.
Скопировал функции класса для поддержки заказа в 1клик
getOneClickOrder,validOneClickInfo,saveOneClickInfo

Попробовал запустить перейдя по адресу.
пустой экран
спотыкалось на этой строчке       
$objectId = $objects->addObject($order->getName(), $emarketOneClick->getId());
я добавил в таблицу
cms3_object_types новый тип с guid: emarket-purchase-oneclick
белый экран пропал но стала вылезать ошибка
error-required_one_click_list
и я не нашел что и куда добавлять теперь  :(
собственно в этом и вопрос

32
Все вроде вопрос решился, пошли обходным путем.
Всем спасибо

33
Есть у кого нить мысли?
Как и что можно дернуть чтобы расчитало стоимость доставки?

34
Шаблоны XSLT / Re:Выгрузка в YML
« : 18 Мая 2014, 00:35:30 »
Спасибо, перезалил xls файл из другого сайта, отключил кеш выгрузилось как надо. правда просто отключение кеша не помогло. видимо файл для выгрузки в юмл испорчен что ли был. сейчас с включенным кешем все работает как надо

35
Там свой сайт со своими шаблонами, от стандартных ничего не осталось.
Изначально сделано оформление заказа в несколько шагов. попросили сделать в 1 шаг, взял вот эту статью
http://wiki.umisoft.ru/Оформление_заказа_в_один_шаг_–_xslt_шаблонизатор

и прикрутил шаблон вот отсюда:
http://umihelp.ru/forum/index.php?topic=1366.0

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:umi="http://www.umi-cms.ru/TR/umi">


<!-- СТРАНИЦА CART -->

<xsl:template match="result[@module='emarket' and @method='cart']">

<div class=" no-aside container frame clearfix">
<div class="section">
<ul class="breadcrumbs">
<li><a href="#">Главная</a></li>
<li>Корзина</li>
</ul>         
<h1>Ваша корзина</h1>
   
<!-- Вывод корзины товаров -->
<div class="cart-f">
<ul class="cart">
<li class="title-heading">
<div class="col1"><strong>Товар</strong></div>
<div class="col2"><strong>Количество</strong></div>
<div class="col3"><strong>Стоимость</strong></div>
<div class="col4"><strong>Удалить</strong></div>
</li>

<!-- Вывод товаров в корзине items -->
<xsl:apply-templates select="udata/items/item" mode="cart_items" />                   
<li class="clearfix total title-heading">
<div class="total-box">
<strong class="label">ИТОГО:</strong>
<strong class="value"><xsl:value-of select="udata/summary/price/actual"/> .- </strong>
</div>
</li>
</ul>

<!-- Вывод оформления заказа в один шаг -->   
<xsl:apply-templates select="document('udata://emarket/fast_purchasing_xslt/')/udata" mode="one_step" />   

</div>
</div>
</div>

</xsl:template> 




<!-- Вывод товаров item в корзине -->   
<xsl:template match="item" mode="cart_items" >
<!-- Подключаю форму для кнопки "Пересчитать" -->   
<form id="basket_{page/@id}" action="/emarket/basket/put/element/{page/@id}/" method="get">
<li class="clearfix">
<div class="col1">
<a href="{page/@link}"><img src="{document(concat('upage://', page/@id))/udata/page/properties/group[@name='images_tovara']/property[@name='glavnoe_izobrazhenie']/value}"  width="59"/></a>
<strong><a href="{page/@link}"> <xsl:value-of select="page/name"/></a></strong>
</div>
<div class="col2"><input name="amount" class="text" value="{amount}" type="text" />
<a href="#" onclick="document.getElementById('basket_{page/@id}').submit()" ><img alt="Пересчитать" title="Пересчитать" src="/images/sync.png" style="margin-bottom: 4px; margin-left: 4px;"/></a>
</div>
<div class="col3"><xsl:value-of select="price/actual"/> .- </div>
<div class="col4"><a alt="Удалить товар из корзины" title="Удалить товар из корзины" href="/emarket/basket/remove/element/{./page/@id}/"><span class="del">del</span></a></div>
</li>   
<!-- Закрываю форму для кнопки "Пересчитать" -->
</form>           
</xsl:template> 






<!-- КОРЗИНА ТОВАРОВ ВЫВОД ONE STEP ОФОРМЛЕНИЯ ЗАКАЗА -->

<xsl:template match="udata" mode="one_step" > 
<!-- Подключаю форму обработки данных оформления заказа -->
<form method="post" action="/emarket/saveinfo/">   
<div class="blocks-holder clearfix">   
 
<div class="block main-block">
<h2>Личные данные</h2>   
<!-- Вывод поля данных пользователя -->
<xsl:apply-templates select="customer" mode="customer" />
<!-- Вывод поля адреса доставки -->
<xsl:apply-templates select="delivery" mode="delivery" />
</div>   
 
<div class="sub-block block">
<h2>Способ доставки</h2>
<!-- Вывод выбора способа доставки -->
<xsl:apply-templates select="delivery_choose/items/item" mode="delivery_choose" />
</div>
 
<div class="add-block block">
<h2>Способ оплаты</h2>
<!-- Вывод выбора способа оплаты -->
<xsl:apply-templates select="payment/items/item" mode="payment" />
</div>
</div>

<!-- Вывод кнопки оформления заказа и кнопки возвращения в каталог -->     
<div class="btn-holder">
<input type="submit" value="оформить заказ" class="submit fl-r"/>
<a href="/" class="reset fl-l">Вернуться в каталог</a>
</div>
<!-- Закрываю форму обработки данных оформления заказа -->
</form>

</xsl:template> 





<!-- Поля личных данных пользователя -->                 
<xsl:template match="customer" mode="customer">
<xsl:apply-templates select="document(concat('udata://data/getEditForm/', object/@id))/udata/group/field" mode="delivery_field" />
</xsl:template>

<xsl:template match="delivery" mode="delivery">

<xsl:apply-templates select="document('udata://data/getCreateForm/5')/udata/group/field" mode="delivery_field" />

</xsl:template>





<!-- Вывод поля адреса доставки -->                 
<xsl:template match="field" mode="delivery_field">
<div class="f-row clearfix">
<label class="label"><xsl:value-of select="@title" />*</label>
<div class="f-input"><input type="{@type}" class="text" name="{@input_name}" /></div>
</div>
</xsl:template>

<!-- Вывод поля СТРАНА адреса доставки -->   
<xsl:template match="field[@name='country']" mode="delivery_field">
<div class="f-row clearfix">
<label class="label"><xsl:value-of select="@title" />*</label>
<select name="{@input_name}" class="text">     
<xsl:apply-templates select="values/item" mode="delivery_field_select" />
</select>
</div>
</xsl:template>

<!-- Вывод данных списка в поле СТРАНА адреса доставки -->   
<xsl:template match="item" mode="delivery_field_select">
<option value="{@id}" ><xsl:value-of select="."/></option>
</xsl:template>









<!--Вывод item способов доставки-->
<xsl:template match="item" mode="delivery_choose" > 
<div class="f-row clearfix">
<input checked="checked" name="delivery-address" value="new" type="radio" />
<label for="r5"><xsl:value-of select="@name"/></label>
</div>               
</xsl:template> 

<!--Вывод item способов оплаты-->
<xsl:template match="item" mode="payment" > 
<div class="f-row clearfix">
<input checked="checked" type="radio" name="payment-id" class="{@type-name}" value="{@id}" />
<label for="r2"><xsl:value-of select="@name"/></label>
</div>
</xsl:template> 

</xsl:stylesheet>

Рассчитываться стоимость доставки должна после заполнения индекса(ведь вроде на это смотрит ). ну либо хотя бы по нажатию кнопки. все равно. это ведь с помощью скрипта решить можно... главное что дергать...

36
Спасибо буду разбираться....
Как я представляю работу со скидкой у не авторизованного пользователя:
Пользователь нажимает на кнопку выполняется скрипт и как вариант в куки добавляется признак - то что скидка есть.
А дальше обработчик смотрит в куки...

Правильно думаю?

37
Шаблоны XSLT / Re:Выгрузка в YML
« : 17 Мая 2014, 02:36:32 »
Скидка - обычная, на время и на конкретный товар, скидка выражается в %

Цитировать
скидка при суммарной стоимости заказа покупателя больше n-ой суммы", "скидка на определенного пользователя
-- не учитывается по этим правилам

38
Всем привет, подниму старую тему.
У меня вопрос возник, а как сделать чтобы после ввода адреса расчиталась стоимость доставки?

39
Цитировать
Если да, то скорее всего не хватает прав у гостя на доступ к функции на которую вы его перекидываете, поэтому система просит его авторизоваться
Поправил, спасибо заработало.

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

Цитировать
еще не нажавший на вашу ссылку и тех кто гость и уже должен видеть скидку
Да, да именно в этом и загвоздка

Цитировать
А так, смотрите  предложенного выше вариант: "создавать для гостя объект "покупатель" и уже к нему привязывать факт того, что пользователю дали скидку
Вот самое главное как это сделать?... :(

40
А как это сделать не догоняю.
В текущем виде если пользователь не  авторизован, то перекидывает на форму авторизации

41
По какому критерию должна даваться скидка гостю?
ну клиент переходит по ссылке, там обработчик и ему дается скидка на все товары.

В модуле Интернет магазин есть возможность оформлять заказы гостям это реализовано за счет создания объекта "покупатель-гость" соответственно создается сессия, полагаю можно сделать кастом который будет применять скидку к этому пользователю аналогично тому как это у тебя сделано для зарегистрированных.
а вот как узнать как прописать этого временного пользователя?

вот мой обработчик:
public function discount_all() {
 
  function get_user_id(){
    $permissions = permissionsCollection::getInstance();
    $currentUserId = $permissions->getUserId();
    return $currentUserId;
  }

$object_id = (int) getRequest('param0');
  $objects = umiObjectsCollection::getInstance();
  $objectTypes = umiObjectTypesCollection::getInstance();
  // object_id пользователя
  $user_id = get_user_id();

  $newDiscountObject = $objects->getObject(1280);
  if($newDiscountObject instanceof umiObject) {
   
    $rules_discoun_object = $objects->getObject(1283);
    $users=array();
    $object_user = $objects->getObject($user_id);
    $users = $rules_discoun_object->getValue('users');
    $users[] = $object_user;
    $users = array_unique($users);
    $rules_discoun_object->setValue('users', $users);
    $rules_discoun_object->commit();
    $newDiscountObject->commit();   
  }
  $this->redirect($this->pre_lang . "/emarket/cart/");
     
}

42
Есть следующая задача.
Клиент например нажимает  кнопку и скидка применяется.
В текущем варианте скидка применяется пользователю авторизованному.
А как применить скидку если пользователь не авторизован?
Если применять скидку гостю то ее получат все не авторизованные пользователи?
Может можно как нить сессию отслеживать?

43
Шаблоны XSLT / Re:Выгрузка в YML
« : 05 Мая 2014, 16:08:29 »
Нет ни у кого идей?

44
Шаблоны XSLT / Re:Выгрузка в YML
« : 29 Апреля 2014, 07:13:45 »
Вот применил твой код на нескольких товарах
теперь ошибка не вылетает
Но стоимость товара по прежнему указана без скидки....
чего то я не понял

<offer id="26" available="false">
<url>
http://aaaappp.ru/catalog/iphone/iphone_4s/iphone_4s_8gb_black1/
</url>
<price>18000</price>
<currencyId>RUR</currencyId>
<categoryId>22</categoryId>
<name>iPhone 4S 8Gb Black</name>
</offer>

45
Шаблоны XSLT / Re:Выгрузка в YML
« : 29 Апреля 2014, 07:05:37 »
Вот код без применения скидки
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<yml_catalog date="2014-04-28 09:56">
<shop>
<name>umicms.demo site</name>
<company>umicms.demo site</company>
<url>http://aaaappp.ru</url>
<currencies>
<currency id="RUR" rate="1"/>
<currency id="USD" rate="31.5"/>
<currency id="EUR" rate="35"/>
</currencies>
<categories>
<category id="3">Каталог</category>
<category id="13" parentId="3">iPhone</category>
<category id="22" parentId="13">iPhone 4S</category>
</categories>
<offers>
<offer id="26" available="false">
<url>
http://aaaappp.ru/catalog/iphone/iphone_4s/iphone_4s_8gb_black1/
</url>
<price>18000</price>
<currencyId>RUR</currencyId>
<categoryId>22</categoryId>
<name>iPhone 4S 8Gb Black</name>
</offer>
</offers>
</shop>
</yml_catalog>
<!--
 This page generated in 0.037596 secs by XSLT, ADMIN MODE
-->

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