Процесс постобработки с помощью посадочных страниц

Здравствуйте,

Я пытаюсь понять, почему функция пост-обработки (post cooking) не работает для плагина Landing Pages, и как можно заставить её работать (если это возможно) без изменения кода плагина. Но если всё же придётся, что я могу сделать? Ruby — не моя сильная сторона.

На моём экземпляре Discourse установлены компонент PDF-Preview и плагин Discourse-Chart. Однако при отрисовке поста он вообще не проходит обработку (cooking). Или, по крайней мере, не учитываются существующие плагины и компоненты темы.

Для отрисовки поста на страницах лендингов используется и выполняется следующий код.

В файле html.erb:

::LandingPages::Post.html(@topic_view.posts.first).html_safe

который вызывает следующий код в файле discourse-landing-pages/lib/landing-pages/post.rb:

class ::LandingPages::Post
  def self.html(post, remove_topic_image: true)
    fragment = Nokogiri::XML.fragment(post.cooked)

    if remove_topic_image && topic_image_sha1 = post.topic&.image_upload&.sha1
      if image_node = fragment.css("a[href*='#{topic_image_sha1}']").first
        image_node.parent.remove
      end
    end

    fragment.to_html
  end
end

Отсюда я не совсем понимаю, что происходит. Предполагаю, что post.cooked просто возвращает уже обработанный текст поста, но это означает, что обработка была выполнена ещё при загрузке страницы…

Спасибо за помощь!

1 лайк