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

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

*

arbuzzz

  • **
  • 80
  • +1/-0
    • Просмотр профиля
Письмо при появлении товара
« : 18 Августа 2016, 23:39:10 »
Никак не соображу, как мне сделать, что бы при изменении остатков из "Мой Склад" с 0 на >0 отправлялось оповещение подписанным клиентам.
Какое событие использовать?
Как я понимаю, по идее это exchangeOnUpdateElement, но как мне нужно использовать before или after?
И что такое (DOMElement) element_info - содержит информацию о добавляемом элементе(странице)(из документации) что в нем содержится и в каком виде.

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Письмо при появлении товара
« Ответ #1 : 19 Августа 2016, 12:00:26 »
before - это точка до обновления элемента
after - это точка после обновления элемента

В точке before вы в элемент в какое-то промежуточное поле можете писать старое количество.
В точке after вы можете сверять содержимое этого поля с новым количеством.
Мой блог http://umicms.me

*

arbuzzz

  • **
  • 80
  • +1/-0
    • Просмотр профиля
Re: Письмо при появлении товара
« Ответ #2 : 19 Августа 2016, 17:29:14 »
before - это точка до обновления элемента
after - это точка после обновления элемента

В точке before вы в элемент в какое-то промежуточное поле можете писать старое количество.
В точке after вы можете сверять содержимое этого поля с новым количеством.
Чем отличаются before и after я понимаю, спасибо. Я имел в виду, какое из них по правильному использовать. Я просто не понимаю какие параметры туда приходят (именно при обмене). Но вариант с промежуточным полем в самой карточке, в принципе, это вариант. Я правда не большой любитель лишние поля городить. Я пока заколхозил таблицу куда делаю записи до и после. Тоже корявенько, хотя бы не видно =))

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Письмо при появлении товара
« Ответ #3 : 19 Августа 2016, 17:40:00 »
Пройдитесь поиском по системному коду, найдите событие и посмотрите какие данные передаются вовнутрь и в какой момент - это самый простой и самый правильный метод определения.

Мало того, это фактически единственный правильный способ, так как у вас может быть ЮМИ какой-то версии, в которой системный код может выглядеть как угодно. В частности, там могут быть какие-то баги, которые исправлены в более поздних версиях (например, не все задокументированные параметры передаются), а в вашей версии они еще не исправлены.
Мой блог http://umicms.me

*

arbuzzz

  • **
  • 80
  • +1/-0
    • Просмотр профиля
Re: Письмо при появлении товара
« Ответ #4 : 19 Августа 2016, 17:47:20 »
Пройдитесь поиском по системному коду, найдите событие и посмотрите какие данные передаются вовнутрь и в какой момент - это самый простой и самый правильный метод определения.

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

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Письмо при появлении товара
« Ответ #5 : 19 Августа 2016, 17:50:43 »
надо обновляться
с 2.9.??? появился механизм достойной чистки базы
с 2.11 существенно повышено быстродействие
с 14 - поддержка php7 , которая тупо в 2-3 раза повышает скорость работы при тех же характеристиках сервера и настройках сайта
+ пофикшены все баги
Мой блог http://umicms.me

*

arbuzzz

  • **
  • 80
  • +1/-0
    • Просмотр профиля
Re: Письмо при появлении товара
« Ответ #6 : 19 Августа 2016, 17:57:03 »
надо обновляться
с 2.9.??? появился механизм достойной чистки базы
с 2.11 существенно повышено быстродействие
с 14 - поддержка php7 , которая тупо в 2-3 раза повышает скорость работы при тех же характеристиках сервера и настройках сайта
+ пофикшены все баги
Механизм чистки базы у меня "на руках" появился немного раньше. У меня был прототип, который они впоследствии, как я понял, использовали в релизе. Я в какой-то момент момент делал обновление достаточно крупного магазина и плотно работал со службой заботы.
Срок поддержки уже закончился, а я не уверен, что в исходниках нет изменений. Я просто не первый, кто поддержкой сайта занимается. Хотя конечно хотелось бы.

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Письмо при появлении товара
« Ответ #7 : 19 Августа 2016, 17:59:54 »
Ну, тут только прыгать и править. Ну или оставаться жить на старой версии и не пользоваться благами цивилизации. Лично я предпочитаю прыгать. Уж больно удобные штуки в штатной ЮМИ появились в последнее время
Мой блог http://umicms.me

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re: Письмо при появлении товара
« Ответ #8 : 19 Августа 2016, 18:07:47 »
> Я пока заколхозил таблицу куда делаю записи до и после. Тоже корявенько, хотя бы не видно =))

Если я правильно помню, то для страниц для получения нового значения нужно использовать не $element->getValue(), а $element->getObject()->getValue();

Как вариант - хранить в статической переменной данные о количестве до обновления и сравнить с количеством после.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Письмо при появлении товара
« Ответ #9 : 19 Августа 2016, 18:12:45 »
Главное - тут хранить не только количество, но и id элемента, так как старое количество может тупо быть от другого объекта, нежели новое :-)
Мой блог http://umicms.me

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re: Письмо при появлении товара
« Ответ #10 : 21 Августа 2016, 11:29:49 »
Цитировать
Главное - тут хранить не только количество, но и id элемента, так как старое количество может тупо быть от другого объекта, нежели новое :-)

Пока не представляю ситуации, когда такое возможно.

if($eventPoint->getMode() == 'before') {
self::$amount = $element->getValue('amount');
} elseif($eventPoint->getMode() == 'after') {
if($element->getObject()->getValue('amount') != self::$amount) {
}
}

Событие вызывается на одном элементе, в before - значение до, в after - значение после сохранения.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Письмо при появлении товара
« Ответ #11 : 22 Августа 2016, 12:02:47 »
Если речь о статической переменной - то там все возможно :-)
Мой блог http://umicms.me