Сам сниппет:
<?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 комментария