الهدف
- استبدال قالب Discourse الأصلي في
discourse/app/views/topics/show.rss.erb. - وضع قالب مخصص في دليل المكون الإضافي:
discourse-XXX/app/views/topics/show.rss.erb. - الهدف: جعل صفحات RSS تقوم بتحميل القالب المخصص بدلاً من القالب الأصلي.
الأساليب التي تم تجربتها والنتائج
النهج 1: وضع القالب المخصص مباشرة في دليل المكون الإضافي
- الإجراء: وضع
show.rss.erbالمخصص فيdiscourse-XXX/app/views/topics/. - النتيجة: لا يزال القالب الأصلي مستخدمًا؛ لا تقوم صفحة RSS بتحميل القالب المخصص.
النهج 2: after_initialize مع prepend_view_path
after_initialize do
class ::TopicsController
prepend_view_path File.expand_path("../app/views", __dir__)
end
end
- النتيجة: تم تجاهل القالب المخصص؛ تستمر صفحة RSS في استخدام القالب الأصلي.
النهج 3: after_initialize مع prepend_view_path يشير إلى دليل المكون الإضافي
after_initialize do
class ::TopicsController
prepend_view_path Rails.root.join("plugins/discourse-XXX-plugin-name/app/views")
end
end
- النتيجة: لا يزال القالب المخصص غير مستخدم؛ تستمر صفحة RSS في عرض القالب الأصلي.
النهج 4: تجاوز الطريقة feed وعرض القالب المخصص بشكل صريح
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
- النتيجة: يبدو أن القالب المخصص يتم استدعاؤه، ولكن زيارة صفحة
.rssالخاصة بالموضوع تؤدي إلى خطأoops.
آمل أن يلخص هذا التقرير المحاولات والمشكلات التي تمت مواجهتها بوضوح. سأكون ممتنًا للغاية لأي رؤى أو اقتراحات أو حلول من المجتمع لاستبدال قالب show.rss.erb بنجاح. شكرًا مقدمًا على مساعدتكم!