TL;DR:
Я пытаюсь добавить что-то в дайджест. Раньше я переопределял шаблон, но теперь не могу, по непонятным причинам.
Поскольку переопределение шаблонов — это плохо, в некоторых местах дайджеста используется digest_custom_html, который вставляет текст, поэтому к нему нужно добавлять .html_safe. По крайней мере, один из них находится не на своём месте (в названии есть “above”, но на самом деле он ниже).
Думаю, у меня есть навыки, чтобы сделать PR по этому вопросу, если только из-за его простоты кому-то другому не будет проще это сделать.
Более длинная и болезненная история.
Я делал это здесь: GitHub - pfaffman/discourse-add-to-summary: Add text to summary before and after title · GitHub, но, похоже, это перестало работать.
Я думаю, что хочу сделать, не внося изменений в ядро, — переопределить шаблон digest.html.erb. Раньше я мог сделать это, поместив файл в app/views/user_notifications/digest.html.erb, и этот файл обрабатывался вместо того, что в ядре. Теперь это, похоже, не работает.
Теперь у нас есть несколько крутых digest_custom_html, например:
Внимательный читатель заметит, что популярные темы начинаются примерно на 78-й строке, задолго до 277-й. Не уверен, сколько времени я потратил, думая, что ничего не происходит, потому что искал не в том месте. Но я отвлекся.
Мне удалось сделать это в plugin.rb после after_initialize:
require_dependency "user_notifications"
module ::UserNotificationsHelperOverride
def digest_custom_html(position_key)
puts "doing improved the digest: #{position_key}"
if position_key == "below_popular_topics"
puts "doing the custom html for above_popular_topics"
# Custom HTML for the popular topics position
"<div class='custom-popular-topics'>MY COOOOOOOL TEXT</div>"
else
puts "doing the super for #{position_key}"
super
end
end
end
И действительно, текст добавляется в то место, где, как я ожидал, он должен измениться в шаблоне!
Но, увы, он обрабатывается не как HTML, а как текст. Так что…
Я просмотрел все плагины и не нашёл примеров использования этого кода кем-либо.
Будет ли приветствоваться PR, если я изменю строки типа
<%= digest_custom_html("below_popular_topics") %>
и заменю их на
<%= digest_custom_html("below_popular_topics").html_safe %>
И, пока я заодно, возможно, стоит убедиться, что имена position_key более соответствуют их расположению?