It also seems to work if you replace api.onPageChange(() => {
with $( document ).ready(function() {
and then the script won’t load on every page, but I never know for sure where I need api.onPageChange(() => { .
لقد كنت أبحث عن شيء مشابه، ولكن مع استثناء بعض المجموعات، لذلك جربت ChatGPT، وكانت الإجابة:
لإنشاء سمة HTML في Discourse تقوم بتشغيل نص برمجي يستثني مجموعات معينة، ستحتاج إلى استخدام خيارات تخصيص السمات في Discourse مع JavaScript للتعامل مع استثناءات المجموعات. يوفر Discourse api.getCurrentUser() لاسترداد تفاصيل المستخدم، بما في ذلك مجموعاته، والتي يمكن أن تكون مفيدة لتشغيل النص البرمجي الخاص بك بشكل شرطي.
إليك مثال لكيفية تنفيذ ذلك في قسم </head> من السمة أو المكون الخاص بك:
<script type="text/discourse-plugin" version="0.8">
api.onPageChange(() => {
// استرداد تفاصيل المستخدم الحالي
const currentUser = api.getCurrentUser();
if (currentUser) {
// قائمة بأسماء المجموعات التي تريد استبعادها من تنفيذ النص البرمجي
const excludedGroups = ['group1', 'group2'];
// الحصول على مجموعات المستخدم
const userGroups = currentUser.groups.map(group => group.name);
// التحقق مما إذا كان المستخدم ينتمي إلى أي مجموعة مستبعدة
const isExcluded = excludedGroups.some(group => userGroups.includes(group));
if (!isExcluded) {
// منطق النص البرمجي المخصص الخاص بك هنا
console.log('يتم تنفيذ النص البرمجي لهذا المستخدم.');
// مثال: تشغيل أي منطق مخصص للمستخدمين غير المستبعدين
// customScriptFunction();
} else {
console.log('المستخدم في مجموعة مستبعدة، لم يتم تنفيذ النص البرمجي.');
}
}
});
</script>
شرح:
api.onPageChange(): يقوم بتشغيل النص البرمجي في كل مرة تتغير فيها الصفحة.
api.getCurrentUser(): يجلب تفاصيل المستخدم المسجل دخوله حاليًا.
excludedGroups: قم بإدراج المجموعات التي تريد استبعادها.
userGroups.includes(group): يتحقق مما إذا كان المستخدم ينتمي إلى أي مجموعة مستبعدة.
التنفيذ الشرطي للنص البرمجي: سيتم تشغيل النص البرمجي فقط إذا لم يكن المستخدم جزءًا من أي مجموعة مستبعدة.
يمكنك استبدال customScriptFunction(); بأي نص برمجي تحتاجه. أخبرني إذا كنت بحاجة إلى أي تعديلات إضافية!
أعني، عقلي منفجر تمامًا من هذا . لم أجربه بعد، ولكن هل رمز ChatGPT صحيح؟