Forza footer-nav con cookie

Discourse renderizza quel footer in base ad alcune condizioni. Il footer viene aggiunto qui.

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

showFooterNav è definito qui.

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

Se una di queste condizioni è vera, la barra di navigazione verrà visualizzata.

isiOSPWA() e isAppWebview() sono definiti qui

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

Ad esempio, isAppWebview() appare così.

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

Puoi aggiungere una condizione supplementare nel tuo tema, all’interno del tuo sito Discourse, per verificare la presenza di un cookie, ad esempio in questo modo:

const isWKWebView = () => {
  // controlla la presenza del cookie e restituisci true se esiste
  // oppure utilizza qualsiasi altro metodo per rilevare se l'utente sta utilizzando la tua applicazione
}

Per altre classi, normalmente potresti modificare showFooterNav() nel seguente modo:

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

Tuttavia, si tratta del controller dell’applicazione, il che significa che verrà memorizzato nella cache prima che il tuo codice abbia la possibilità di essere eseguito. In altre parole, non potrai modificare la classe.

Detto questo, puoi comunque cambiare il valore di showFooterNav con qualcosa del genere:

<script type="text/discourse-plugin" version="0.8">
  const isWKWebView = () => {
    // controlla e restituisci la tua condizione
  };

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

nella scheda intestazione del tuo tema o in un inizializzatore se stai utilizzando un tema remoto.

5 Mi Piace