Письмо с дайджестом обновлений с использованием плагина

Всем привет,

Я хочу улучшить нашу рассылку, добавив новый раздел — блок с кратким списком вакансий (с названием и локацией), который будет загружаться из внешнего API.

Что я пытаюсь сделать:

  • Изменение существующего шаблона письма:
    Я хочу добавить новый блок в нашу текущую рассылку для отображения списка вакансий.
  • Подход на основе плагинов:
    Моя идея — создать плагин, который будет получать данные о вакансиях из API и вставлять эту информацию в шаблон письма. Я заметил, что некоторые области этих писем можно редактировать через интерфейс, что заставило меня предположить, что возможно изменение базовых файлов шаблонов через плагин.


Проблема:

Я не могу получить доступ к этим файлам шаблонов изнутри плагина. Это порождает несколько вопросов:

  1. Доступ к файлам шаблонов:
    Возможно ли получить доступ и изменить эти файлы шаблонов писем с помощью плагина? Если да, какой подход рекомендуется?
  2. Альтернативные решения:
    Если прямой доступ к файлам невозможен, существуют ли другие методы или лучшие практики для внедрения пользовательских данных (например, наших списков вакансий) в рассылку?

Буду признателен за любые идеи, опыт или предложения по этому подходу. Заранее спасибо за помощь!

Дополнительные вопросы могли бы быть такими: может ли плагин, например, создавать или редактировать этот файл user_notifications.digest.custom.text.below_popular_topics? Я использую саморазмещённый экземпляр Discourse в Docker.

В целом, в плагине можно делать что угодно. Нет изолированной среды, которая защищала бы плагины от защищённого ядра.

Проблема скорее заключается в том, чтобы научиться это делать и реализовать так, чтобы это работало после обновлений.

Вам стоит перенести этот вопрос в канал Development.

user_notifications.digest.custom.text.below_popular_topics — это ключ для системы i18n в Discourse. В коде соответствующая переведённая строка будет получена из базы данных или конфигурации.

Мне кажется, вам стоит поискать другой способ реализации желаемого поведения, так как регулярное изменение этого текста (которое пришлось бы делать для каждого используемого на вашем форуме языка пользователей) — не лучшее решение.

Один из вариантов — расширить
discourse/app/helpers/user_notifications_helper.rb at f76d88063d6b850b07ffb9a25c9dcc3eadb13750 · discourse/discourse · GitHub,
добавив туда ваш контент.