Комментарии

 AK


AK 30 июля 2014, 23:22 #
Уже и не помню, судя по коду должно.
Тонкости и трюкиSendex - отправка рассылки при публикации ресурса   8



AK 13 февраля 2014, 18:52 #
Это уже после отправки рассылки в очередь нужно добавить, насколько я понимаю.
Я планировал отправку вешать на крон.
Расширения MODX[Sendex] Компонент управления рассылками   43

AK 13 февраля 2014, 18:30 #
Пришлось пораскинуть мозгами, может кому подойдет такая реализация, делюсь

<?php
/**
** Плагин, при публикации ресурса в указанном разделе, передает текст ресурса 
** в шаблон Sendex и отправляет подписку в очередь
**
** OnDocPublished срабатывает только при публикации ресурса через контекстное 
** меню документа в дереве ресурсов
**
** В шаблоне sendex в месте куда нужно вставлять контент должен быть 
** тег <div id="content"></div>
*/

if ($modx->event->name == 'OnDocPublished') {

    if ($resource->get('parent') != 5) return; // 5 - ID раздела с новостями

    // Получение шаблона

    $response = $modx->runProcessor('element/template/get', array(
        'id' => 8 // 8 - ID шаблона sendex
    ));

    if ($response->isError()) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'SendexOnNewsPublished - ошибка чтения шаблона. '.$response->getMessage());
        return;
    } else {
        $template = $response->getObject();
    }
    $newTplContent = preg_replace('/(<div.*?id="content"[^>]*>)(.*?)(<\/div>)/i', '<div id="content">'.$resource->get('content').'</div>', $template['content'], 1);
    
    $data = $template;
    $data['content'] = $newTplContent;

    //Запись контента новости в шаблон

    $response = $modx->runProcessor('element/template/update', $data);

    if ($response->isError()) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'SendexOnNewsPublished - ошибка записи в шаблон. '.$response->getMessage());
        return;
    } else {
        $modx->cacheManager->clearCache();
    }

    // Отправка шаблона в очередь рассылки

    $modx->addPackage('sendex', MODX_CORE_PATH . 'components/sendex/model/');

    if ($newsletter = $modx->getObject('sxNewsletter', 1)) { // 1 - ID рассылки
        $response = $newsletter->addQueues();
        if ($response !== true) {
            echo $response;die;
        }
    }

}
return;
Расширения MODX[Sendex] Компонент управления рассылками   43

AK 13 февраля 2014, 14:42 #
мм… не понятно )
Нужно, чтобы при публикации новости, она отправлялась в очередь на рассылку.
Расширения MODX[Sendex] Компонент управления рассылками   43

AK 13 февраля 2014, 13:49 #
Если я правильно понял, текст рассылки пишется в шаблоне? Если рассылки еженедельные с разным контентом, то нужно править шаблон?
А есть возможность сделать следующим образом, в плагине на событие публикации документа в конкретном разделе (это я разберусь как реализовать) писать содержимое документа в шаблон подписки?
Как отправлять подписку в очередь на рассылку в доках написано.

Подскажите, пожалуйста! Очень нужно, спасибо.
Расширения MODX[Sendex] Компонент управления рассылками   43

AK 28 февраля 2013, 16:05 #
Отдельно, вывод [[*content]] например. С наборами параметров не приходилось сталкиваться.

Создал набор параметров Site, связь с элементом Jevix, в наборе указал cfgSetAutoBrMode — Нет
не сработало…

UPD.
Разобрался. Вызов сниппета
[[Jevix@Site? &input=`[[*content]]`]]
Спасибо за подсказку.
Расширения MODXСниппет Jevix   18

AK 28 февраля 2013, 16:05 #
.
Расширения MODXСниппет Jevix   18

AK 28 февраля 2013, 13:35 #
+1
cfgSetAutoBrMode=`0` ничего не меняет, так-же как и изменение значения в параметрах сниппета.
Расширения MODXСниппет Jevix   18