فرض تذييل التنقل مع ملف تعريف الارتباط

يقوم Discourse بتصيير التذييل بناءً على بعض الشروط. يُضاف التذييل هنا.

https://github.com/discourse/discourse/blob/a0bbc346cb5d5b89d1a3efdfa89869349a8b067f/app/assets/javascripts/discourse/app/templates/application.hbs#L39-L41

يُعرَّف showFooterNav هنا.

discourse/app/assets/javascripts/discourse/app/controllers/application.js at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub

إذا كان أي من الشرطين صحيحًا، فسيتم عرض شريط التنقل.

يُعرَّف isiOSPWA() و isAppWebview() هنا

discourse/app/assets/javascripts/discourse/app/lib/utilities.js at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub

على سبيل المثال، يبدو isAppWebview() كالتالي.

discourse/app/assets/javascripts/discourse/app/lib/utilities.js at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub

يمكنك إنشاء شرط إضافي في نسختك من الموضوع - في موقع Discourse - للتحقق من ملف تعريف الارتباط (cookie)، على النحو التالي

const isWKWebView = () => {
  // تحقق من ملف تعريف الارتباط وأرجع true إذا كان موجودًا
  // أو استخدم أي طريقة أخرى للكشف عما إذا كان المستخدم يستخدم تطبيقك
}

بالنسبة للفئات الأخرى، ستتمكن عادةً من تعديل showFooterNav() على النحو التالي

api.modifyClass("controller:application", {
  pluginId: "show-footer-nav",
  @discourseComputed
  showFooterNav() {
    // ...
  }
});

ومع ذلك، فإن هذا هو وحدة التحكم في التطبيق، مما يعني أنه سيتم تخزينه في الذاكرة المؤقتة قبل أن تتاح لرمزك فرصة التنفيذ. بعبارة أخرى، لن تتمكن من تعديل الفئة.

ومع ذلك، لا يزال بإمكانك تغيير قيمة showFooterNav باستخدام شيء مثل هذا.

<script type="text/discourse-plugin" version="0.8">
  const isWKWebView = () => {
    // تحقق وأرجع شرطك
  };

  if (isWKWebView()) {
    const applicationController = api.container.lookup("controller:application");
    applicationController.set("showFooterNav", true);
  }
</script>

في علامة التبويب رأس الصفحة (header) في نسختك من الموضوع أو في برنامج تهيئة أولية إذا كنت تستخدم موضوعًا عن بُعد.

5 إعجابات