Footer-Nav mit Cookie erzwingen

Discourse rendert diesen Footer basierend auf bestimmten Bedingungen. Der Footer wird hier hinzugefügt.

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

showFooterNav ist hier definiert.

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

Wenn einer dieser Werte wahr ist, wird die Navigation angezeigt.

isiOSPWA() und isAppWebview() sind hier definiert:

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

Zum Beispiel sieht isAppWebview() so aus:

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

Sie können in Ihrem Theme – auf Ihrer Discourse-Website – eine zusätzliche Bedingung erstellen, um nach dem Cookie zu suchen, wie folgt:

const isWKWebView = () => {
  // nach dem Cookie suchen und true zurückgeben, falls vorhanden
  // oder eine andere Methode verwenden, um zu erkennen, ob der Benutzer Ihre Anwendung nutzt
}

Für andere Klassen könnten Sie normalerweise die showFooterNav()-Methode wie folgt ändern:

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

Dies ist jedoch der Application-Controller, was bedeutet, dass er zwischengespeichert wird, bevor Ihr Code ausgeführt werden kann. Mit anderen Worten: Sie können die Klasse nicht ändern.

Trotzdem können Sie den Wert von showFooterNav mit etwas wie folgendem ändern:

<script type="text/discourse-plugin" version="0.8">
  const isWKWebView = () => {
    // prüfen und Ihre Bedingung zurückgeben
  };

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

entweder im Reiter „Header" Ihres Themes oder in einem Initialisierer, wenn Sie ein Remote-Theme verwenden.

5 „Gefällt mir“