api.onPageChange لا تعمل مع التمرير اللانهائي

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

<script type="text/discourse-plugin" version="0.8">
	api.onPageChange(() =>{
		var tags = document.getElementsByClassName("discourse-tag");
		for (i = 0; i < tags.length; i++) {
			var tag = tags[i];
			var url = tag.href;
			var newUrl = "https://site.com" + url;
			tag.href = newUrl;
		}
	});
</script>

هل يجب أن أستخدم شيئًا آخر غير api.onPageChange أو إضافته إليه؟

إعجاب واحد (1)

نعم، لن يعمل ذلك. فسيتم تشغيله فقط عند تغيير المسار. تحتاج إلى التفكير في تجاوز الكود الذي يقوم فعليًا بعرض هذه الوسوم مباشرةً بدلاً من استخدام تحديد DOM.

9 إعجابات

شكرًا لك يا روبرت - كنت أتمنى أن يكون الأمر بسيطًا! :see_no_evil:

مرّ وقت طويل منذ أن قرأت دليل الإضافات، لكنني أتذكر أنه يسير على هذا النحو تقريبًا؟

  • rails g plugin NAME
  • ابحث عن الملف الذي تريد تعديله
  • انسخه إلى نفس المجلد في إضافتك
  • قم بالتعديلات المطلوبة

ومع ذلك، هذا لا يعمل معي.

تعديل هذا الملف مباشرة (في السطر 29): discourse/app/assets/javascripts/discourse/app/lib/render-tag.js at bbe5d8d5cf1220165842985c0e2cd4c454d501cd · discourse/discourse · GitHub يحقق التأثير المطلوب، لكن عند نسخ الملف إلى الموقع التالي: plugins/my-plugin/app/assets/javascripts/discourse/app/lib/render-tag.js لا يحدث أي تأثير.

هل لديك أي أفكار عما أخطئ فيه؟ هل تغير شيء ما منذ أن قرأت الأدلة؟ (لأسباب غير واضحة، كنت أظن أن الأمر بسيطًا مثل تجاوز الملفات لتغيير أشياء صغيرة كهذه).

إعجاب واحد (1)

لا تحتاج إلى إضافة، فهذا جانب العميل. استخدم مكون سمة.

7 إعجابات

شكرًا لك! وبالمناسبة، بدأت في تخصيص Tag Icons الليلة الماضية وتمكنت من جعلها تعمل! :smiley:

لكن بدافع الفضول، هل كان يجب أن تعمل طريقة تجاوز الملف في الإضافة كما وصفت أعلاه؟ (إذا كان الأمر كذلك، هل لديك أي أفكار حول ما كنت أفعله خطأ؟)

إعجاب واحد (1)