Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Вывести цену для группы "элитных" пользователей

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

Ответов: 3
Просмотров: 3856
Последний ответ 12 Ноября 2013, 23:27:00
от Seweryss
Добавление поля "объем" в карточку товара, которое влияло бы на цену

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

Ответов: 5
Просмотров: 4472
Последний ответ 06 Ноября 2016, 14:44:49
от aghigay
Получить цену со скидкой в макросе?

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

Ответов: 0
Просмотров: 1655
Последний ответ 06 Ноября 2013, 17:16:49
от muldy

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

*

francua

  • *
  • 4
  • +0/-0
    • Просмотр профиля
Как зачеркнуть старую цену.
« : 17 Мая 2014, 00:41:57 »
Друзья привет и доброй ночи , так как пишу ночью ).
Кто уже делал , как сделать так чтобы старая цена была зачеркнута ?
идентификатор уже есть , все делал как было описано в данной статье .
http://wiki.umisoft.ru/%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D0%B7%D0%B0%D1%87%D0%B5%D1%80%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D0%B9_%D1%81%D1%82%D0%B0%D1%80%D0%BE%D0%B9_%D1%86%D0%B5%D0%BD%D1%8B_%D1%80%D1%8F%D0%B4%D0%BE%D0%BC_%D1%81_%D1%86%D0%B5%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE_%D1%81%D0%BA%D0%B8%D0%B4%D0%BA%D0%B5(tpl).
Шаблон tpl Версия 2.9
Кто может помочь ?
Изменил код в файле , но не могу понять как дальше , чтобы это все дело отображалось ???

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Как зачеркнуть старую цену.
« Ответ #1 : 17 Мая 2014, 07:47:14 »
ваш вопрос без подробностей выглядит так. "Я все сделал, но оно не работает, почему?".

При этом, для понимания вашей ситуации не хватает информации о том:
- что вы в итоге получили (что выводится),
- в каком месте и с какими параметрами вы вызываете макрос для вывода цены,
- в каком tpl файле вы вносили правки из статьи ,
- может вы делали или заметили еще что-то, что по вашему мнения важно описать


*

francua

  • *
  • 4
  • +0/-0
    • Просмотр профиля
Re:Как зачеркнуть старую цену.
« Ответ #2 : 18 Мая 2014, 17:47:52 »
Сделал так как написано  в статье но не помогло потому , что как оказалось это не то что мне нужно.
UMI работаю совсем не так давно можно сказать новичок.
Написал в тех поддержку свою , подобный вопрос что и тут , вот что мне ответили :
"
Цены на товары в Вашем интернет-магазине равны 0. У Вас реализовано изменение цены товара в зависимости от выбранной опции поля типа "Составное" ("Размер"). Макрос %emarket price()% возвращает цену со скидкой и без на основе базовой цены, поэтому, к сожалению, средствами, описанными в статье, осуществлять вывод зачеркнутой цены не получится.
Для решения Вашей задачи Вы можете написать свой custom макрос, в котором будет происходить поиск скидки на товар в зависимости от выбранного размера (в данном случае).
"
Теперь либо бросить эту затею либо может Вы что то посоветуете как сделать этот макрос или с чего начать ,  странно у них еще ни кто такого не реализовывал.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Как зачеркнуть старую цену.
« Ответ #3 : 18 Мая 2014, 20:59:29 »
Опишу за вас вашу ситуацию, но надеюсь в следующий раз вы будете делать это сами.

У вас есть товары, на которые созданна скидка типа "скидка на товары и разделы", при этом выодя цену товара, вы видите её без скидки. Цета товара у вас равна 0, но у товара есть опционные свойства, которые не поддаются скидки, то есть просто выводятся.

Сразу вопрос: "Как в шаблоне краткой карточки товара вы выводите цену (хотя бы без скидки)?"

По поводу советов что делать.

1. рассмотреть вариант разделения вашего составного товара на несколько обычных товаров(то есть, чтобы в системе был не один товар с опциональными наценками и 0 базовой ценой, а несколько с не 0 базовой ценой)
2. написать комплекс макросов, которые подсовывают системе вместо нулевой базовой цены, стоимость опции. К сожалению, универсального макроса нет, так как работа с базовой ценой (полем price) зашита в некоторых приватных функциях, которые приходиться обходить стороной и в каждом случае это свой вариант. По крайней мере в моем опыте, может кто поделиться своими наработками.

*

ilyar

Re:Как зачеркнуть старую цену.
« Ответ #4 : 18 Мая 2014, 23:19:23 »
2. написать комплекс макросов, которые подсовывают системе вместо нулевой базовой цены, стоимость опции. К сожалению, универсального макроса нет, так как работа с базовой ценой (полем price) зашита в некоторых приватных функциях, которые приходиться обходить стороной и в каждом случае это свой вариант. По крайней мере в моем опыте, может кто поделиться своими наработками.

Теоретически, для решения задачи отобразить цену можно использовать baseRestriction.

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re:Как зачеркнуть старую цену.
« Ответ #5 : 18 Мая 2014, 23:30:18 »
Есть обработчик umiObjectProperty_loadPriceValue - http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/sobytijnaya_model_umicms/standartnye_tochki_vyzova/#sel=4:522,4:522

Позволяет в любой момент переопределить цену. Единственное но - вызывается и в админке, и в публичной части, нужно будет написать проверку.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

ilyar

Re:Как зачеркнуть старую цену.
« Ответ #6 : 18 Мая 2014, 23:32:59 »
Есть обработчик umiObjectProperty_loadPriceValue - http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/sobytijnaya_model_umicms/standartnye_tochki_vyzova/#sel=4:522,4:522

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

супер, спасибо, полезно!

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Как зачеркнуть старую цену.
« Ответ #7 : 19 Мая 2014, 00:11:18 »
обсуждение живинько пошло))

2. написать комплекс макросов, которые подсовывают системе вместо нулевой базовой цены, стоимость опции. К сожалению, универсального макроса нет, так как работа с базовой ценой (полем price) зашита в некоторых приватных функциях, которые приходиться обходить стороной и в каждом случае это свой вариант. По крайней мере в моем опыте, может кто поделиться своими наработками.

Теоретически, для решения задачи отобразить цену можно использовать baseRestriction.

Интересный вариант, еще не пробовал работать с baseRestriction, но предполагал что он работает по другому, вернее нужен для других случаев.

Как мне видиться, написание своего "валидатора" будет влиять только на процесс сохранения или редактирование объекта с полем, использующее такой "валидатор".

То есть, если, используя baseRestriction, написать "валидатор" формы телефона +7 (xxx) xxx-xx-xx, то система будет проверять его при сохранении в админке или отправке формы с таким полем или редактировании такого объекта (например пользователя) если у них есть поле с таким "валидатором".

Или есть другой способ использовать baseRestriction?

P.S. Особенно обнадеживает кусок текста из документации
Цитировать
...представляют из себя набор классов по валидации и модификации значений полей...


*

ilyar

Re:Как зачеркнуть старую цену.
« Ответ #8 : 19 Мая 2014, 00:25:15 »
обсуждение живинько пошло))

Теоретически, для решения задачи отобразить цену можно использовать baseRestriction.

Интересный вариант, еще не пробовал работать с baseRestriction, но предполагал что он работает по другому, вернее нужен для других случаев.

Как мне видиться, написание своего "валидатора" будет влиять только на процесс сохранения или редактирование объекта с полем, использующее такой "валидатор".

То есть, если, используя baseRestriction, написать "валидатор" формы телефона +7 (xxx) xxx-xx-xx, то система будет проверять его при сохранении в админке или отправке формы с таким полем или редактировании такого объекта (например пользователя) если у них есть поле с таким "валидатором".

Или есть другой способ использовать baseRestriction?

P.S. Особенно обнадеживает кусок текста из документации
Цитировать
...представляют из себя набор классов по валидации и модификации значений полей...


Не только для валидации, в классе есть еще два полезных метода:

normalizeIn() — Преобразовать значение поля перед сохранением в базу
normalizeOut() — Преобразовать значение поля после загрузки из базы

Для задачи темы, надо реализовать в рестрикшене  normalizeOut() и повесить на поле Цена,  в результате будем получать вместо 0, что то иное...  В результате получается замена события umiObjectProperty_loadPriceValue и учитывая событие есть то вернее будет использовать его, а рестрикшен подойдет для других задач в манипуляции с другими полями.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Как зачеркнуть старую цену.
« Ответ #9 : 19 Мая 2014, 00:56:08 »
очень интересно, пошел тестить