صفحة إعادة التوجيه لعناوين URL الخارجية

ما تبحث عنه يُسمى “زخرفة المنشور” (post decorator). إنه خطاف يسمح لك بتشغيل السكريبتات قبل عرض كل منشور. وهو جزء من واجهة برمجة التطبيقات للإضافات.

الآن، فيما يتعلق بما تريد فعله (إعادة توجيه جميع الروابط الخارجية). لا أعتقد أن إضافة مثل هذا الاحتكاك فكرة جيدة، لذا لا يمكنني مساعدتك في ذلك - بالإضافة إلى أنك قد استنتجت ذلك الجزء بالفعل. مع ذلك، إليك مثال مُعلق يوضح كيفية إنشاء إعداد يستهدف جميع الروابط الخارجية في المنشورات

يتم وضع هذا في قسم header من السمة الخاصة بك أو مكون السمة

<script type="text/discourse-plugin" version="0.8">
  // تخزين اسم المضيف (hostname) لإعادة استخدامه.
  const siteHostname = location.hostname;
  
  // لنقم بإنشاء زخرفة لتنفيذ ذلك في كل منشور
  api.decorateCooked(
    post => {
      // هل يحتوي المنشور على روابط؟
      const links = [...post[0].querySelectorAll("a")];
      
      // لا توجد روابط، نخرج.
      if (!links.length) return;
      
      لدينا روابط، فلنقوم بتصفيتها ونستخرج فقط تلك الخارجية
      const externalLinks = links.filter(
        link => link.hostname !== siteHostname
      );
      
      // إذا كانت لدينا روابط خارجية، فلنقم ببعض العمل. على سبيل المثال، يمكننا
      // إضافة فئة إلى كل رابط خارجي كالتالي.
      externalLinks.forEach(link => {
        link.classList.add('external-link');
        // قم بمزيد من العمل هنا.
      });
    },
    // نعطي زخرفتنا معرفًا لمنع تسرب الذاكرة.
    { id: "external-link-decorator" }
  );
</script>

مرة أخرى، إعادة توجيه المستخدمين تُسبب احتكاكًا كبيرًا وستصبح مزعجة بسرعة. لذا، أقترح عليك اعتبار نهجًا آخر، مثل إضافة أيقونة دقيقة بجانب الروابط الخارجية وتعليم مستخدميك معناها بدلاً من ذلك؟