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

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

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


Темы - sam

Страницы: 1 [2] 3
16
Здравствуйте! Хотим указать в .../modules/catalog/object-view.xsl условия доставки ("доставка ?! руб.", "бесплатная доставка"). Ниже код, подскажите, как правильно сделать проверку, чтобы, если стоимость товара 15.000 руб. и больше, то "бесплатная доставка", а если меньше 15.000 руб., то "доставка ?! руб.".

<xsl:choose>
<xsl:when test="здесь условие для проверки - данные по стоимости товара должны браться из udata://emarket/price/">
Бесплатная доставка
</xsl:when>
<xsl:otherwise>
Доставка ?! руб.
</xsl:otherwise>
</xsl:choose>

17
Шаблоны XSLT / Вызов цены товара
« : 13 Апреля 2015, 13:23:38 »
Здравствуйте! Сделал одну фишку - если перелистывать страницу, наверху всплывает неподвижный "head" в которым через xsl вызвал значение "h1" (//property[@name = 'h1']/value). Хочу вызывать еще цену на товар, если это всплывает в объекте каталога, но не получается.
Просьба подсказать, как правильнее вызвать цену товара + сделать проверку, чтобы, если посетитель зашел именно на страницу объекта каталога, то выводить ему еще и цену, если в других разделах сайта, то цену не выводить.

Делаю так (значение "h1" вызывается, а вот цена нет, и проверку не знаю какую написать?!):
...
<div id="watching_name">
<xsl:apply-templates select="//property[@name = 'h1']/value" />
<xsl:if test="проверка, выводить, если это объект каталога">
<span umi:element-id="{page/@id}" umi:field-name="price">
<xsl:apply-templates select="document(concat('udata://emarket/price/', page/@id,'//0'))" />
</span>
</xsl:if>
</div>
...

Т.е. вопросов два:
1. Проверка, выводить цену, если это объект каталога - как сделать?
2. Цена по вышеуказанному вызову не выводиться - что не так?

Заранее спасибо за советы и подсказки!

18
Здравствуйте! Кто может подсказать - почему я, как админ, сделанные мной тестовые заказы могу из админки удалять, а вот заказы сделанные покупателями, а затем отмененные, удалять не могу? В чем проблема (вероятный код, который мешает удалять чужие заказы админом):

		public function onOrderDeleteCleanRelations(iUmiEventPoint $e) {
if($e->getMode() != 'before') return;
$object = $e->getRef('object');
if($object instanceof iUmiObject) {
$type = selector::get('object-type')->id($object->getTypeId());
if($type && $type->getMethod() == 'order') {
$order = order::get($object->id);
$orderItems = $order->getItems();
if (sizeof($orderItems) > 0) {
foreach($orderItems as $item) {
$orderItem = orderItem::get($item->getId());
$orderItem->remove();
}
}
$customerId = $order->getCustomerId();
if (!is_null($customerId)) {
$customer = selector::get('object')->id($customerId);
$method = $customer->getMethod();
if ($customer->getMethod() == 'customer') {
umiObjectsExpiration::getInstance()->add($customerId);
}
}
$customerOneClickId = $order->getValue('purchaser_one_click');
if (!is_null($customerOneClickId)) {
$customerOneClick = selector::get('object')->id($customerOneClickId);
if ($customerOneClick instanceof umiObject && $customerOneClick->getTypeGUID() == 'emarket-purchase-oneclick') {
umiObjectsExpiration::getInstance()->add($customerOneClickId);
}
}
$order->commit();
}
}
}

19
JS и AJAX / Заказ в "1 клик" - basket.js
« : 29 Января 2015, 19:59:10 »
Вопрос 1: Кто подскажет, по какой причине Ajax не рисует div class="overlay" для всплывающего окна (стили в css есть, да и скрипт вроде правильный)?
Вопрос 2: И почему кнопка "продолжить" в заказе в "1 клик" не закрывает всплывающее окно:

Код для первого вопроса:
site.basket.oneClick = function(id, form) {
var option = $(form).find('input[type="radio"]:checked');
var optional;
if (option.length > 0) {
optional = '?' + option.attr('name') + '=' + $(form).find('input[type="radio"]:checked').val()
} else {
optional = '';
}

var locale = location.pathname;
var lang = locale.substring(1,locale.substring(1).indexOf('/')+1);

jQuery.ajax({
url: '/udata/emarket/createForm/emarket-purchase-oneclick?transform=modules/catalog/one-click.xsl&lang=' + lang,
dataType: 'html',
success: function (data) {
site.message({
id: 'one_click_popup_' + id,
header: 'Заказ в "1 клик"',
width: 380,
content: data,
async: false
});
var form = jQuery('form.buyer_data');
form.attr('action', form.attr('action') + 'element/' + id + '.xml' + optional)
form.append('<table cellpadding="15" style="margin-top: -5px;"><tr><td></td><td align="right"><input type="submit" class="button2" value="' + 'Отправить' + '" /></td></tr></table>');
form.submit(function() {
var xml = site.basket.sendForm(form).responseXML;

form.closest('.content').find('.error').remove();
$(xml).find('error').each(
function() {
form.closest('div').prepend('<div class="error">' + $(this).text() + '</div>');
}
);

form.closest('.content').find('.success').remove();
if ($(xml).find('orderId').length > 0) {
site.basket.replace('all');
form.closest('div').prepend('<div class="success"><div><p>' + 'Заказ ' + '<strong>№' + $(xml).find('orderId').eq(0).text() + '</strong>' + ' успешно оформлен! <br/> Ожидайте звонка от менеджера нашего магазина.' + '</p></div><a class="button big close">' + 'Продолжить' + '</a></div>');
form.remove();
}

return false;
});
}
});
}

Код для второго вопроса:
site.basket.list = function(link) {
var oneClick = false;
var id = (link.id.indexOf('add_basket') != -1) ? link.id.replace(/^add_basket_/, '') : false;
if (!id) {
oneClick = true;
id = (link.id.indexOf('one_click') != -1) ? link.id.replace(/^one_click_/, '') : link;
}
if (!id) return false;
if (jQuery(link).hasClass('options_true')) {
var url = '/upage//' + id + '?transform=modules/catalog/popup-add-options.xsl';
if (oneClick) {
url = '/upage//' + id + '?transform=modules/catalog/popup-add-options-oneclick.xsl';
}
if (jQuery('#add_options_' + id).length == 0) {
jQuery.ajax({
url: url,
dataType: 'html',
success: function (data) {
site.message({
id: 'add_options_' + id,
header: 'Выбор опций',
width: 380,
content: data,
async: false
});
var form = jQuery('form.options');
form.append('<input type="submit" class="button2" value="' + 'Добавить' + '" />');
form.submit(function() {
if (!site.basket.is_cart && !oneClick) {
site.basket.add(id, this, true);
} else if (!site.basket.is_cart && oneClick) {
site.basket.oneClick(id, this);
site.message.close(jQuery('#add_options_' + id), jQuery('.overlay'));
}
return false;
});
}
});
}
}
else if(!oneClick) {
this.add(id);
} else {
site.basket.oneClick(id);
}
};

20
Может никто еще не задавался этим вопросом, но с 5 декабря 2014 г. admin не проявлял себя в сети. Последняя активность admin-а на umihelp.ru была именно в эту дату. Просьба, всем кто лично знаком с admin, сообщите нам форумчанам, что его отсутствие в сети имеет временный и объективный характер, и что в ближайшие дни он нас обрадует своим присутствием в сети. Он нам всем очень дорог!

21
Шаблоны XSLT / Не совсем по теме вопрос
« : 28 Ноября 2014, 17:35:29 »
Здравствуйте! Понимаю, что вопрос не совсем по теме, но не знаю где задаться этим вопросом - почему-то в Яндекс.Браузере text-decoration: underline линия подчеркивания вплотную прижимается к тексту, т.е. без 1px от текста (во всех остальных браузерах все ок). Думал, может дело в doctype, но не тут-то было. Может кто сталкивался с подобной проблемой? - поделитесь опытом.
Кстати, в umihelp.ru/forum/index.php аналогично, как и у нас.

22
Здравствуйте! Просьба подсказать: хотим сделать замену кнопки "добавить в корзину" (только текст "добавить в корзину").

У нас в справочнике есть статус "Наличие товара" (<xsl:value-of select="//property[@name = 'available']/value/item/@name" />) с соответствующей информацией (выпадающий список):
 - "нет в наличии" (делать ничего не надо, так как, отключаем объект)
 - "есть в наличии" (текст "добавить в корзину" по умолчанию)
 - "ожидается поставка" (id 10694)
 - "поставка на заказ" (id 10695)

Сейчас при любом статусе отображается кнопка "добавить в корзину". А хотим сделать так, чтобы при смене статуса наличия товара, изменилась и информация на кнопке (без изменения дальнейших шагов оформления заказа, т.е. только текст кнопки) через xsl:choose с проверкой на id статуса. Например, по умолчанию текст "добавить в корзину", а при смене статуса на "ожидается поставка" (id 10694) изменить текст на "добавить в резерв", или при статусе "поставка на заказ" (id 10695) текст "добавить в заказ".

Подскажите, как сделать проверку по id статуса наличия товара из выпадающего списка?

23
Здравствуйте! Подскажите, с чем это может быть связано - страница с полным списком просмотренных товаров у нас отображается пустым?! XML смотрели, там просмотренные объекты есть.

Ранее, старую 2.8.5 версию системы мы обновили до 2.9.0. Так как при обновлении шаблоны не меняются, и соответственно не всё перенеслось, самостоятельно перенесли вроде всё необходимое (не системную часть), т.е.:
1. В /layouts/default.xsl добавили соответствующий вызов блока
2. Файл recentPages.xsl добавили в директиву xslt/modules/content/
3. В common.xsl (xslt/modules/content/) добавили соответствующий include
Никаких других действий или переносов не делали.

Так почему страница с полным списком просмотренных товаров у нас отображается пустым?

Заранее спасибо за помощь!

24
Здравствуйте! Просьба помочь сделать калькулятор (расчет стоимости доставки в регион).

Суть в том, что в объектах хотим сделать выпадающий список со списком регионов (таблица аналогично тому, как во вложенном файле) - при выборе региона, чтобы система произвела расчет стоимости доставки товара в этот регион. Во вложенном файле набросали рыбу, и наше видение этой формулы расчета, и постарались расписать, чтобы Вам было легче ориентироваться и помочь.

Заранее благодарю!

P.S. Мы с Вами уже считали "старая цена-новая цена = разница". В случае с калькулятором немного сложнее, по крайней мере для нас. 

25
Здравствуйте! А как можно в админ.части в редактировании раздела вызвать содержимое уже существующего раздела из вновь созданного раздела? Т.е., есть раздел "Vendorname" (имеет своё название/
псевдостатический адрес/vendorname и свой id 1671), создаю новый пустой раздел и в поле Дополнительно/Описание хочу вставить %вызов%, чтобы в этом разделе отобразить содержимое/объекты существующего раздела "Vendorname". Может иначе как-то надо вызывать?!

Если это можно сделать, подскажите еще, можно ли таким же или аналогичным вызовом в одном разделе вызывать объекты 2-х разделов?

Буду признателен за развернутый ответ, или код для вызова!

26
Шаблоны XSLT / XSLT: вызов контента страницы
« : 11 Ноября 2014, 09:08:51 »
Здравствуйте! Каким вызовом можно вывести контент любой страницы сайта без h1 (потому без h1, чтобы на вызываемой странице не было потом два h1). Например, есть страница mysite.com/delivery/ (id страницы 38), как вызвать содержимое этой страницы в какой-либо другой странице контента, только без h1?

27
Здравствуйте!

Прошу подсказать: хочу сделать старую зачеркнутую цену рядом с ценой без использования скидочных механизмов, т.е. в Шаблоне данных (Тип данных -> Объекты каталога) в ценовые свойства добавляю новое поле с идентификатором "old_price", получаю в объектах это пустое поле (тип: строка/цена), дальше в объекте вручную ввожу произвольную цену и пробую вызвать инфо. из этого блока через <xsl:value-of select="//property[@name = 'old_price']/value/item/@name" /> в object-view.xsl, а информация/значение не выводиться на сайт?!

Почему? Что не так делаю?!

Заранее спасибо за помощь!

P.S. Суть в том, чтобы на сайте сделать блок с двумя ценами, одна зачеркнутая, а другая реальная - поля заполняются вручную при обновлении цен на товары (если, например, предыдущая цена была дороже настоящей, в старые вручную переносим предыдущую цену и зачеркиваем, а в поле цена вписываем уже актуальную новую цену).

28
Здравствуйте! У меня такой вопрос: как можно в объектах каталога вывести, например, 5 строк (tr) из характеристик товара через XSLT, т.е. без JS (правда, варианта с JS тож нет у меня)?

Заранее спасибо!

29
На данный момент поиск отвечая на запросы (поиск товаров) выдает ответ - порядковый номер, ссылку на найденный объект плюс строку, где есть соответствующие поисковому запросу ключевые слова. 

Вопрос: не могли бы подсказать, как можно сохранив вышеописанный вывод для всех разделов сайта кроме каталога, сделать еще один шаблон для раздела "каталог", где поисковый ответ должен будет равняться short-view, т.е. так, как объекты отображаются в категориях, если мы говорим о поиске товаров на сайте? Как бы получается, что добавить шаблон заключенный в xsl:if test="если поисковое слово найдено в объектах/категориях, то выводить этот шаблон", далее шаблон short-view. Или же с xsl:choosе - как логичнее на ваш взгляд. Примерный код шаблона с проверкой можете предложить?

Заранее спасибо!

30
Прошу уточнить, с чем может быть связано следующее сообщение - что не так?

"Notice: Undefined offset: 1 in /docs/classes/modules/stat/classes/libs/detect.php on line 394"

Данное сообщение вылезает в IE11 при первом посещении сайта, вне зависимости от того, в какую страницу заходишь. В других версиях IE не пробовали смотреть.


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