Forcer le pied de page-nav avec cookie

Discourse rend ce pied de page en fonction de certaines conditions. Le pied de page est ajouté ici.

discourse/app/assets/javascripts/discourse/app/templates/application.hbs at a0bbc346cb5d5b89d1a3efdfa89869349a8b067f · discourse/discourse · GitHub

showFooterNav est défini ici.

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

Si l’une ou l’autre de ces conditions est vraie, la barre de navigation sera affichée.

isiOSPWA() et isAppWebview() sont définis ici

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

Par exemple, isAppWebview() ressemble à ceci.

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

Vous pouvez créer une condition supplémentaire dans votre thème — sur votre site Discourse — pour vérifier le cookie, comme ceci :

const isWKWebView = () => {
  // vérifier la présence du cookie et retourner true s'il existe
  // ou utiliser toute autre méthode pour détecter si l'utilisateur utilise votre application
}

Pour d’autres classes, vous seriez normalement en mesure de modifier showFooterNav() comme suit :

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

Cependant, il s’agit du contrôleur de l’application, ce qui signifie qu’il sera mis en cache avant que votre code n’ait la possibilité de s’exécuter. En d’autres termes, vous ne pourrez pas modifier la classe.

Cela dit, vous pouvez toujours modifier la valeur de showFooterNav avec quelque chose comme ceci :

<script type="text/discourse-plugin" version="0.8">
  const isWKWebView = () => {
    // vérifier et retourner votre condition
  };

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

dans l’onglet en-tête de votre thème ou dans un initialiseur si vous utilisez un thème distant.

5 « J'aime »