Jump to main content Jump to doc navigation

virtuNewsletter: система рассылок для MODX Revolution.

Старые docs см. virtunewsletter.

Загрузка

virtuNewsletter скачивается через менеджер MODX Revolution в Package Management или из MODX Extras Repository: https://modx.com/extras/package/virtunewsletter

Разработка и сообщения об ошибках

virtuNewsletter на GitHub: https://github.com/virtudraft/virtuNewsletter

Кратко

  1. Настройте формат рассылки через обычный ресурс в дереве слева
  2. В CMP добавьте category как группу рассылки. К category можно привязать usergroups
  3. Добавьте newsletter в category
  4. Выберите « is recurring»: рассылка повторяется по заданному диапазону (weekly, monthly, yearly) и делится на число повторений (1: monthly, 7: weekly, то есть daily).

virtuNewsletter отправляет рассылки через cron.

Note: MODX Cloud сейчас не предоставляет cron как сервис.

Подробнее о настройке cron см. раздел ниже.

Email Templates

Нужны email-шаблоны для подтверждений. Это ресурсы, не чанки и не стандартные templates. Их можно не публиковать или скрыть. pagetitle станет subject письма, content: body.

Сниппеты и чанки внутри ресурса обрабатываются. getResources может дать обновления сайта в теле письма. Ресурсы удобнее для нетехнических редакторов, чем HTML в чанке.

Схема назначения ресурсов:

Email «Thank you for your subscription»

Шаблон подтверждения подписки. По умолчанию: core/components/virtunewsletter/elements/emails/activation-email.tpl

Update 1.6.0-beta2: шаблон можно создать в CMP и настроить под culture key.

Update 1.6.0-beta-1: [[+virtuNewsletter.email.subid]] = [[+virtuNewsletter.email.id]]

<p>Hello [[+virtuNewsletter.email.name:default=`[[+virtuNewsletter.email.email]]`]],</p>
<p>Thank you for your subscription.</p>
<p>To complete this, please click this link to activate your account:
    <a href="[[~62?
        &subid=`[[+virtuNewsletter.email.subid]]`
        &h=`[[+virtuNewsletter.email.hash]]`
        &act=`subscribe`
        &scheme=`full`]]"
        target="_blank">activate</a>.
</p>
<p>You can unsubscribe back later if it is required.</p>
<p> </p>
<p>Regards,</p>
<p><a href="http://www.example.com" target="_blank">Example.com</a></p>

ID# 62 замените на id ресурса страницы подтверждения с содержимым:

[[!virtuNewsletter.confirm]]

Email «Your subscription has been activated successfully»

Update 1.6.0-beta2: шаблон можно создать в CMP и настроить под culture key.

Шаблон подтверждённой подписки. По умолчанию: core/components/virtunewsletter/elements/emails/activated-email.tpl

<p>Thank you.</p>
<p>Your subscription has been activated successfully.</p>
<p>We will send you the upcoming newsletter once they are published.</p>
<p> </p>
<p>Regards,</p>
<p><a href="http://www.example.com" target="_blank">Example.com</a></p>

Email «You have been unsubscribed successfully»

Update 1.6.0-beta2: шаблон можно создать в CMP и настроить под culture key.

Шаблон отписки.

В каждой рассылке есть ссылка отписки. Она ведёт на ту же страницу подтверждения, но с действием unsubscribe. По умолчанию: core/components/virtunewsletter/elements/emails/deactivated-email.tpl

<p>Thank you.</p>
<p>Your subscription has been cancelled successfully.</p>
<p>We will no longer send you the upcoming newsletters.</p>
<p> </p>
<p>Regards,</p>
<p><a href="http://www.example.com" target="_blank">Example.com</a></p>

На этом этапе подписчик не удаляется из системы. Он только деактивируется.

System Settings

Settings Description
virtunewsletter.usergroups Имена usergroups через запятую. Эти группы подписываются автоматически
virtunewsletter.email_debug Включите, чтобы писать плейсхолдеры письма в error log MODX без отправки
virtunewsletter.email_limit Число писем в час для cron. Уточните лимиты у хостера. 0 или пусто: без лимита, все письма одним batch. Default: 50.
virtunewsletter.email_sender Отправитель в header письма. По умолчанию значение emailsender
virtunewsletter.subscribe_confirmation_tpl ID ресурса как email-шаблон новой подписки, как шаблон Thank you for your subscription
virtunewsletter.subscribe_succeeded_tpl ID ресурса как email-шаблон подтверждения отписки
virtunewsletter.unsubscribe_succeeded_tpl ID ресурса как email-шаблон завершённой отписки
virtunewsletter.readerpage ID ресурса, где посетитель читает рассылку в браузере

Resources, Snippets and Chunks

Создайте ещё 3 ресурса со сниппетами:

1. Subscribe

Создайте ресурс и поместите сниппет в content.

Example: this is the ID# 61 for the subscribe form below.

[[!virtuNewsletter.subscribe]]

2. Confirm

Создайте ресурс и поместите сниппет в content.

Example: this is the ID# 62 in my template examples above.

[[!virtuNewsletter.confirm]]

3. Read

Создайте ресурс и поместите сниппет в content.

Example: this is the ID# 63 for the link in the email's body of the newsletter below. This resource will be the website's newsletter reader page. Use the MODX's original BaseTemplate, without any CSS styles.

[[!virtuNewsletter.reader]]

Чтобы вывести плейсхолдеры:

[[!virtuNewsletter.reader? &toArray=`1`]]

4. Chunk

Форма подписки (может быть чанком):

<form action="[[~61]]" method="POST">
    <p>Email: <input type="email" name="email"></p>
    <input type="hidden" name="category" value="Customer News">
    <p><input type="submit" name="submit" value="Subscribe"></p>
</form>

NO FORMIT, NO HOOK!

Просто укажите action на Subscribe page выше. Поле category required: подписчик попадёт в нужную Category в CMP.

Снова: УБЕДИТЕСЬ, ЧТО CATEGORY ЕСТЬ В CMP.

Имя поля можно менять, но тогда обновите [[!virtuNewsletter.subscribe? &categoryKey=category]] на Subscribe page

5. Рассылки

Теперь можно создавать рассылки через обычный ресурс.

  1. Создайте шаблон, который будет телом письма, без тегов html и body.

  2. Поместите CSS внутрь тега style. Стили автоматически станут inline в теле письма.

  3. Добавьте плейсхолдеры для ссылки отписки или чтения рассылки на сайте:

Update 1.6.0-beta-1: [[+virtuNewsletter.email.newsid]] = [[+virtuNewsletter.email.id]]

<!-- unsubscribe link -->
<a href="[[~62?
    &subid=`[[+virtuNewsletter.email.subid]]`
    &h=`[[+virtuNewsletter.email.hash]]`
    &act=`unsubscribe`
    &scheme=`full`
]]">
Unsubscribe
</a>
<!-- read the newsletter on the website -->
<a href="[[~63?
    &scheme=`full`
    &newsid=`[[+virtuNewsletter.email.newsid]]`
    &e=`[[+virtuNewsletter.email.email]]`
    &h=`[[+virtuNewsletter.email.hash]]`
]]">read this newsletter on the website</a>

Note: нужен &e или &h. Достаточно одного из них.

Во всех ссылках указывайте &scheme=full, чтобы URL был полным.

Custom Manager Page (CMP)

Newsletters

Category

Category: группа подписчиков. Подписчики из usergroups или анонимные с веб-формы. Форма подписки must содержать поле category (или имя из [[!virtuNewsletter.subscriber? &categoryKey=category]]).

Сначала создайте category в CMP.

Subscribers

Здесь зарегистрированные подписчики и auto-registered из virtunewsletter.usergroups. При необходимости синхронизируйте.

Cron

На своём хостинге задайте команду:

php -q /home/xxx[absolute_path]xxx/public_html/assets/components/virtunewsletter/conn/web.php action=web/crons/queues/process site_id=modx12abc345678d90.12345678

Аргументы в CLI без «?» и «&».

Для стороннего cron-сервиса укажите URL:

hxxp://www.your_cool_website.com/assets/components/virtunewsletter/conn/web.php?action=web/crons/queues/process&site_id=modx12abc345678d90.12345678

site_id обязателен! Замените site_id=modx12abc345678d90.12345678 на id вашего сайта из core/config/config.inc.php, переменная $site_id. Обновляйте после каждого обновления MODX. Значение меняется!

Heads Up Не делитесь site_id! Это секрет MODX от cross-site scripting. На форуме подменяйте значение!

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more