Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Добавление страницы в "Избранное"

Автор diii3Раздел Шаблоны XSLT

Ответов: 4
Просмотров: 3278
Последний ответ 13 Февраля 2013, 06:18:50
от admin
Требуется выбрать только те страницы, у которых значение поля равно заданному

Автор tkalyuginaРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 3795
Последний ответ 26 Сентября 2019, 13:01:06
от pandus
Модуль Меню - заголовки для блоков меню их поля "Название"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 8
Просмотров: 7287
Последний ответ 06 Июня 2014, 12:06:35
от admin
Вывод страницы в меню с отключением вывода в карте сайта

Автор alpotemkinРаздел Макросы UMI.CMS

Ответов: 6
Просмотров: 5639
Последний ответ 03 Ноября 2011, 15:07:29
от alpotemkin
не могу добавить виртуальные копии и ссылки на похожие страницы

Автор voldРаздел Наполнение сайтов

Ответов: 6
Просмотров: 56387
Последний ответ 20 Октября 2013, 16:21:58
от vold

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

*

igor84

  • *
  • 5
  • +0/-0
    • Просмотр профиля
Разбираюсь с api umi пока не все понятно, помогите пожалуйста
Задача на почту отправлять информацию по странице с которой отправлен комментарий.
Как сейчас реализовано
1) Отлавливаю событие comments_message_post_do
2) Добавил кастомную функцию
public function onAddComment(iUmiEventPoint $oEventPoint) {
   if ($oEventPoint->getMode() === "before") return true;
   if ($oEventPoint->getMode() === "after") {
    $element  = $oEventPoint->getRef('element');
    // берем необходимые параметры
    $iCommentId = $oEventPoint->getParam("message_id");
$hierarchy = umiHierarchy::getInstance();
    // получаем объект "Комментарий"
    $oComment = umiHierarchy::getInstance()->getElement($iCommentId);
    if ($oComment instanceof umiHierarchyElement) {
     
     // формируем письмо
     $oMyMail = new umiMail();
     $oMyMail->setFrom("mailer@example.com", "mailer");
     $oMyMail->setSubject("Добавлен новый комментарий");
     $oMyMail->setContent($oComment->getValue("message"));
     $oMyMail->addRecipient("warrior84spb@gmail.com", "Admin");

     // отправляем письмо
     $oMyMail->commit();
    }
    return true;
   }
}

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

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
берешь всех родителей  своего комментария и перебирая каждого их них проверяешь их тип данных, если он не является комментарием, то это та страница которая тебе нужна

$parents = umiHierarchy::getInstance()->getAllParents($itemElementId, false, true);
foreach($parents as $parent_id){
$page = umiHierarchy::getInstance()->getElement($parent_id); // получаем саму страницу
if(!$page) continue;
$page_type_id = $page->getObject()->getTypeId();
if($page_type_id==128){ //128 type id типа данных "комментарий"
// делаем то что надо... то есть сохраняем название родительской страницы
break;
}
}

*

igor84

  • *
  • 5
  • +0/-0
    • Просмотр профиля
admin, понял. Спасибо.