Наверх

Подписка пользователей при регистрации в MODX.

В разделе «Репосты» расположены чужие статьи, которые мне понравились или показались полезными.

Обратился заказчик с заданием — подписывать пользователей на рассылку новостей при регистрации. Сайт работает на MODX revolution и используется компонент Sendex. Написал небольшой сниппет — subscription, который подключается через параметр &postHooks сниппета Register, компонента Login. В свою очередь, сниппет subscription, имеет один единственный параметр &idnewsletter, в котором передаётся ID рассылки.

Сам сниппет:
<?php
/**
 *  subscription
 * 
 *  Copyright 2015 by Marat Marabar <marat@marabar.ru>
 *  Site: http://marabar.ru
 *
 * subscription snippet, требуется компонент Sendex
 * 
 *  Сниппет подписывет пользователей на рассылку, во впемя их регистрации.
 * Вызывается через параметр &postHooks сниппета Register, компонента Login.
 * В параметре &idnewsletter, указывается ID рассылки, по умолчанию 1.
 * 
 * [[!Register?
 *          &postHooks=`subscription`
 *          &idnewsletter=`1`
 *          ....
 *          ....
 *          ....
 * ]]
 *  
 */
 
$Sendex = $modx->getService('sendex','Sendex',$modx->getOption('sendex_core_path',null,$modx->getOption('core_path').'components/sendex/').'model/sendex/');
if (!($Sendex instanceof Sendex)) return '';
 
$idnewsletter = $modx->getOption('idnewsletter', $scriptProperties, '1');
 
$username = $hook->getValue('username');
 
$userarray = $modx->getObject('modUser', array('username' => $username));
$userid = $userarray->get('id');
 
$profile = $userarray->getOne('Profile');
$email = $profile->get('email');
 
$duble = $modx->getObject('sxSubscriber', array('email' => $email));
if ($duble) {return;}
 
if ($userid) {
    $obj = $modx->newObject('sxSubscriber');
    $data = array(
            'user_id' => $userid,
            'email' => $email,
            'newsletter_id' => $idnewsletter,
            );
    
    $obj->fromArray($data);
    $obj->save();
}
 
return;

Как, уже, выше сказал, да и в коде, в комментариях, есть инструкция, subscription подключается через параметр &postHooks сниппета Register, работает через компонент Sendex

[[!Register?
    &postHooks=`subscription`
    &idnewsletter=`1`
    ....
    ....
    ....
]]

В параметр &idnewsletter, указывается ID рассылки, по умолчанию — 1.

Есть проверка на дубли Email.

Источник: marabar.ru/blog-snippetyi-modx/121/

2 комментария

  1. Sergey 13 июля 2018, 15:51 # 0
    Илья, а как для office такое сделать?
    1. Илья Уткин 16 июля 2018, 07:01 # 0
      Не знаю. Это вообще не моя статья — это репост. Я просто сохранил у себя на всякий случай)

    Авторизация

    через сервис Loginza:

    Подписка или RSS

    Буду присылать новые статьи — никакого спама



    Шаблоны MODX

    1 2 Дальше »

    Объектная
    модель
    MODX