Jump to content
  1. Общая информация о уведомлениях и e-mail оповещениях

    Уведомления или e-mail?
    У вас есть несколько вариантов для отправки уведомлений своим пользователям:
    Подписка. Пользователи могут подписываться ну других пользователей, на контейнеры контента (например категории) и элементы контента (например темы), тем самым получая уведомления о контент, который их интересует. Уведомления - Пользователи могут настраивать способы уведомления о некоторых событиях (хочет ли он получать встроенное уведомление, письмо на e-mail или сразу оба способа уведомления) и вы можете отправлять им уведомления в соответствии с этими настройками. Например, уведомления отправляются, когда кто-то опубликует сообщение в профиле другого пользователя. Информацию о том, как это реализовать, смотрите ниже. E-mail - Вы также можете вручную отправить электронное письмо своему пользователю. Информацию о том, как это реализовать, смотрите ниже. Хотя все эти 3 системы взаимодействуют друг с другом, важно их не путать: система подписки отправляет уведомление, которое также может быть e-mail письмом. Вы также можете отправить уведомление, которое может быть электронным письмом, или вы можете просто отправить электронное письмо.
    Если вам нужно оповестить о чём-то пользователя, вы должны хорошо подумать о том, подходит ли уведомление или e-mail. Как правило, уведомления нужны для того, чтобы сообщить пользователю о том, что произошло то, что ему может быть интересно (Например, уведомления отправляются, когда кто-то опубликует сообщение в профиле другого пользователя), а e-mail письма лучше всего подходят для вещей, которые отвечают конкретному действию, или требуют действия от самого пользователя (например, отправляется e-mail письмо, когда отправляется товар, купленный пользователем в Коммерции).
  2. Отправка уведомлений пользователям

    Создание расширения
    Первым шагом является создание расширения уведомлений. В Центре разработчика для вашего приложения перейдите на вкладку Extensions > Core и нажмите кнопку "+" справа от пункта Notifications. Будет создан файл в директории вашего приложения extensions/core/Notifications с изначальным скелетом. Откройте этот файл и следуйте инструкциям в нем, чтобы добавить свои типы уведомлений на страницу Настройки уведомлений и создать метод (-ы), который будет контролировать то, что будет отображено пользователю, когда он кликнет на иконку уведомлений в шапке сайта.
    Создание e-mail шаблона
    Вы должны создать e-mail шаблоны для тех случаев, когда пользователь включил возможность получать e-mail письма при получении уведомления. Следуйте инструкциям, приведенным в шагах 1-2 руководства по отправке e-mail сообщений. Для ваших шаблонов в качестве ключа используйте notification_key, где key это ключ уведомления, указанный вами в методе getConfiguration()). Например: тип уведомления new_status (в приложении core) использует e-mail шаблоны notification_new_status, которые для этого объекта используют строку языка mailsub__core_notification_new_status.
    Отправка уведомления
    Фактический код для отправки уведомления очень прост:
    $notification = new \IPS\Notification( \IPS\Application::load('app'), 'key', $item, $params ); $notification->recipients->attach( \IPS\Member::load(1) ); $notification->send(); $item - Должен быть объект того, о чём отправляется уведомление, что используется для предотвращения отправки одного и того же уведомления более одного раза или NULL, если это не применимо. Если это элемент контента (не обязательно, но будем так считать), уведомление автоматически удалит получателя, если у него нет разрешения на чтение элемента или игнорируется пользователь, который его опубликовал. $params - Любые параметры, которые вы хотите передать шаблону электронной почты. Вы вызываете $notification->recipients->attach() для каждого пользователя, которому хотите отправить уведомление, передавай объект \IPS\Member.
  3. Отправка e-mail сообщений пользователям

    1. Создание e-mail шаблона
    Контент для e-mail сообщений хранится в директории dev/email приложения. Например, если посмотреть в директорию applications/core/dev/email (вам нужно находиться в режиме разработчика, чтобы увидеть эту папку), вы увидите все e-mail сообщения, отправляемые приложением core.
    Все e-mail сообщения, отправляемые Invision Community, могут быть в двух форматах: HTML (для большинства e-mail клиентов) и простой текст (для устаревших e-mail клиентов или пользователей, кто намеренно не желает получать письма в простом тексте). Для каждого отправляемого типа существует два файла key.phtml (содержит HTML версию письма) и key.txt (версия с простым текстом).
    Обратите внимание, что оба типа сообщений отправляются пользователю, и его почтовый клиент самостоятельно определит наиболее подходящий вариант для отображения.
    Для отправки собственных e-mail писем, вы должны создать оба варианта. Их ключи могут быть любыми, но уникальными. Первая строка обоих файлов должна быть тегом:
    <ips:template parameters="$parameter1, $parameter2, $email" /> Позже (на шаге 3), когда вы вызываете код для отправки своего e-mail письма, вы можете передать любые параметры, которые хотите  использовать в ваших шаблонах.
    Внутри своих шаблонов вы можете использовать логику шаблонов и теги шаблонов, однако имейте ввиду, отправленное вами письмо, вероятно, будет с другим авторизованным пользователем при отправке сообщения, поэтому, поэтому не используйте ничего, что зависит от текущего авторизованного пользователя. И самое главное, не используйте тег шаблона {lang=""} (который всегда основывается на текущем авторизованном пользователе). Вместо этого вы можете получить использовать $email->language, являющийся объектом класса \IPS\Lang для правильного использования языка получателя.
    Также есть специальный тег {dir}, который также можно использовать в шаблоне. Это либо ltr, либо rtl, в зависимости от языка получателя и применяется (особенно для таблиц) для обеспечения правильного расположения e-mail письма для языка. Пример использования:
    <td dir='{dir}' valign='middle' align='center' style="..."> При создании своего шаблона HTML имейте в виду, что почтовые клиенты используют самые разные стандарты для браузеров, и многие обычные техники не могут быть использованы. Мы рекомендуем вам использовать шаблон из какого-либо приложения Invision Community в качестве основы, кроме того вы можете использовать такой инструмент, как Litmus.
    При создании шаблона с простым текстом, вы не должны использовать какие-либо HTML теги, а пробелы принимаются во внимание; то есть любые пробелы в шаблоне будут отображаться в письме. 
    2. Добавление языковой строки для темы письма
    Система будет автоматически искать языковую строку с ключом mailsub__<app>_<key>, чтобы использовать её в качестве темы, поэтому необходимо добавить её в файл dev/lang.php. Обратите внимание, что вы можете использовать параметры, которые вы передаете шаблону - например, в файле applications/core/dev/lang.php можно увидеть следующее:
    'mailsub__core_notification_new_likes' => '{$member->name|raw} liked your post', 3. Отправка e-mail сообщения
    Фактический код для отправки электронной почты очень прост:
    \IPS\Email::buildFromTemplate( 'app', 'key', $params )->send( $member ); Метод send() может быть передан как объект \IPS\Member (это лучший способ, так как система будет автоматически настраивать e-mail для пользователя, включая выбор правильного языка) или e-mail адрес в виде строки (что вы должны сделать, если нужно отправить e-mail письмо незарегистрированным пользователям), или массив любого из них для отправки нескольким получателям. Вы также можете передавать второй и третий параметры для пользователей в CC (копия ) и BCC (скрытая копия) соответственно.
    Если вы хотите настроить контент сообщения в зависимости от пользователя, вы можете включить переменные в свой шаблон в формате *|key|* , а затем отправить так:
    <td> *|some_key|*<br> </td> PHP:
    \IPS\Email::buildFromTemplate( 'app', 'key', $params, TRUE )->mergeAndSend( array( 'user1@example.com' => array( 'some_key' => 'value for user 1', ), 'user2@example.com' => array( 'some_key' => 'value for user 2', ) ) );  

Messenger

    ×
    ×
    • Create New...

    Important Information

    By using our site you agree to our Privacy Policy