Doelstelling
- Vervang de originele Discourse-sjabloon op
discourse/app/views/topics/show.rss.erb. - Plaats een aangepaste sjabloon in de plugin-directory:
discourse-XXX/app/views/topics/show.rss.erb. - Doel: Zorg ervoor dat RSS-pagina’s de plugin-sjabloon laden in plaats van de originele sjabloon.
Pogingen en Resultaten
Poging 1: De aangepaste sjabloon rechtstreeks in de plugin-directory plaatsen
- Actie: Plaats de aangepaste
show.rss.erbindiscourse-XXX/app/views/. - Resultaat: De originele sjabloon wordt nog steeds gebruikt; de RSS-pagina laadt de plugin-sjabloon niet.
Poging 2: after_initialize met prepend_view_path
after_initialize do
class ::TopicsController
prepend_view_path File.expand_path("../app/views", __dir__)
end
end
- Resultaat: De plugin-sjabloon wordt genegeerd; de RSS-pagina blijft de originele sjabloon gebruiken.
Poging 3: after_initialize met prepend_view_path die verwijst naar de plugin-directory
after_initialize do
class ::TopicsController
prepend_view_path Rails.root.join("plugins/discourse-XXX-plugin-name/app/views")
end
end
- Resultaat: De plugin-sjabloon wordt nog steeds niet gebruikt; de RSS-pagina blijft de originele sjabloon renderen.
Poging 4: De feed-methode overschrijven en expliciet de plugin-sjabloon renderen
class ::TopicsController
prepend_view_path Rails.root.join("plugins/discourse-XXX/app/views")
alias_method :original_feed, :feed
def feed
raise Discourse::NotFound if !Post.exists?(topic_id: params[:topic_id])
begin
@topic_view = TopicView.new(params[:topic_id])
rescue Discourse::NotLoggedIn
raise Discourse::NotFound
rescue Discourse::InvalidAccess => ex
deleted =
guardian.can_see_topic?(ex.obj, false) ||
(!guardian.can_see_topic?(ex.obj) && ex.obj.access_topic_via_group && ex.obj.deleted_at)
raise Discourse::NotFound.new(
nil,
check_permalinks: deleted,
original_path: ex.obj.relative_url,
)
end
@first_post = @topic_view.posts.first
discourse_expires_in 1.minute
response.headers["X-Robots-Tag"] = "noindex, nofollow"
render file: Rails.root.join("plugins/discourse-XXX/app/views/topics/show.rss.erb"), formats: [:rss]
end
end
- Resultaat: De plugin-sjabloon lijkt te worden aangeroepen, maar het bezoeken van de
.rss-pagina van een onderwerp resulteert in eenoops-fout.
Ik hoop dat dit rapport de pogingen en de ondervonden problemen duidelijk samenvat. Ik zou zeer dankbaar zijn voor inzichten, suggesties of oplossingen van de community om de show.rss.erb-sjabloon succesvol te vervangen. Alvast bedankt voor uw hulp!