تغيير قائمة المواضيع للموجه المنزلي - من الأحدث إلى التالي

مرحبًا بالجميع!

أحاول تغيير مسار قائمة المواضيع الافتراضية في الصفحة الرئيسية، لكنني لم أجد طريقة حتى الآن! آمل أن تتمكنوا من مساعدتي.

أحاول الانتقال من “الأحدث” إلى “المتابعة” (أي المواضيع المنشورة من قبل الأشخاص الذين أتابعهم).

الطرق التي جربتها:

  • كانت الطريقة الأكثر كفاءة هي إضافة قائمة علوية بعنوان “المتابعة”، لكنها لم تنجح.
  • الطريقة الأخرى كانت عبر تثبيت Custom Top Navigation Links. سمحت لي بإضافة روابط تنقل في القائمة العلوية، لكن المسار “/” (الجذر) ما زال يعرض قائمة “الأحدث”.
  • الطريقة الثالثة كانت عبر التعديل على ملف “discourse/app/routes/app-route-map.js” حيث تُعرَّف “الفلاتر”. لكن هذا أيضًا لم ينجح.
    • this.route("discovery", { path: "/", resetNamespace: true }, function () {

هدفي:

  • تغيير قائمة المواضيع التي تظهر عند زيارة “http://localhost:3000/” من “الأحدث” إلى “المتابعة”، وهو أمر ممكن بفضل Discourse Follow. وبما أن مسار “/following” موجود بالفعل ويعمل، أردت أن يتم تنفيذ هذا المسار عند زيارة “/”.

هل هذا ممكن؟!

آمل أن تساعدوني!
أطيب التحيات،
فيليب

قد يساعدك طلب السحب (PR) الأخير الخاص بي.

أضفت هنا عنصر “الإشارات المرجعية” إلى العرض الافتراضي الممكن:

كان أصعب جزء هو إضافة حالات الاختبار! :slight_smile:

سأعتبر هذا طلب سحب (PR) للإضافة (plugin). الجزء الصعب هو أنه يظهر حاليًا فقط إذا كان هناك شيء يُعرض… لذا ستحتاج إلى مراعاة ذلك…

مرحبًا روبرت! قمت بتغيير الملفين من طلب السحب (PR) الذي ذكرته.

لم ينجح الأمر. اعتقدت أنه مع هذه التغييرات سيكون من الممكن اختيار إعدادات الموقع “القائمة العلوية”. لذا، إذا كان “latest” مطلوبًا، سأضع “following” - “latest” بالتسلسل، وبهذه الطريقة سيتم إعادة توجيه الصفحة الرئيسية إلى “following”.

وجدت طريقة أثناء التطوير من

import { setDefaultHomepage } from 'discourse/lib/utilities';

لذلك، في مكوناتي، في البداية وضعت:

setDefaultHomepage("following");

لأنه في وحدة تحكم Rails، وجدت متغير SiteSetting.homepage الذي كان قيمته “latest”.
وعمل بنجاح :smiley:!

هل ترى أي مشاكل؟

أخشى تحميل “latest” من الخلفية وأن يتم تحميل المُهيئ (initializer) على جانب العميل.

مع أطيب التحيات،
فيليب

لا، لن تتمكن من تعديل ملف Ruby مباشرة. كان ذلك مجرد تلميح. فبعد كل شيء، لن تقوم بتقديم طلب دمج (PR) للنواة كما فعلت في تلك الحالة. سأضطر على الأرجح إلى إيجاد طريقة لتعديل ذلك من خلال مُهيّئ الإضافة في ملف plugin.rb… سيكون هذا تغييرًا في الإضافة وليس في النواة.

يا هلا!

في plugin.rb، وكما قلت، تمكنت من وضع “following” كخيار وحيد:

UserOption.class_eval do
	def homepage 
		"following"
	end 
end

هه، حسنًا، هذه إحدى الطرق للقيام بذلك، لكن في الواقع يجب عليك إضافته كخيار، ومنح المستخدم دائمًا إمكانية تغييره… على الأقل إذا كنت تريد دمجه في الإضافة :wink:

لكن نعم، عمل رائع، استمر في تطويره.

بالمناسبة، راجع أيضًا: