Discourse は、いくつかの条件に基づいてフッターをレンダリングします。フッターはここで追加されています。
showFooterNav はここで定義されています。
これらのいずれかが true の場合、ナビゲーションが表示されます。
isiOSPWA() と isAppWebview() はここで定義されています。
例えば、isAppWebview() は次のようになります。
あなたのテーマ(Discourse サイト内)で、クッキーをチェックする追加の条件を作成することができます。以下のようにします。
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>
これは、テーマのヘッダータブ、またはリモートテーマを使用している場合はイニシャライザーに記述します。