Come aggiungere un pulsante Indietro flottante in Discourse (per utenti mobili)

Ho visto che ci sono stati argomenti sull’avere una navigazione con pulsante indietro mobile per i browser mobili e non ho trovato una soluzione, anche se forse me la sono persa :thinking:

Non sono un programmatore e non sono abbastanza esperto di Discourse da fare danni :wink: ma ho armeggiato con ChatGPT per creare il BLU funzionante pulsante indietro in questa immagine con il mio cucciolo.

Voglio nasconderlo in pagine specifiche ma non ho ancora capito come nascondere gli elementi. Se qualcuno lo sa, aggiusterò e aggiungerò alle istruzioni.

Come Aggiungere un Pulsante Indietro Fluttuante in Discourse (Per Utenti Mobili)

Questa guida ti aiuta ad aggiungere un pulsante “Indietro” fluttuante per i dispositivi mobili nel tuo forum Discourse. Assicura che il pulsante appaia solo per gli utenti mobili e migliora la navigazione per app o browser che non dispongono di pulsanti indietro integrati.


Passaggio 1: Crea un Nuovo Componente Tema

  1. Accedi come Amministratore:
    • Vai al tuo forum Discourse ed effettua l’accesso con un account amministratore.
  2. Accedi alla Personalizzazione del Tema:
    • Naviga su Admin > Personalizza > Temi.
  3. Crea un Componente Tema:
    • Fai clic su Componenti.
    • Fai clic su Installa > Crea Nuovo.
    • Dai al componente il nome “Pulsante Indietro Mobile” e fai clic su Crea.

Passaggio 2: Aggiungi il Codice del Pulsante Indietro

  1. Modifica il Componente Tema:
    • Fai clic sul componente tema appena creato.
    • Vai alla sezione CSS/HTML.
  2. Aggiungi JavaScript per il Pulsante Indietro:
    • Passa alla scheda Mobile.
    • Fai clic sulla sezione </head>.
    • Incolla il seguente codice:

html

Copia codice

<script type="text/discourse-plugin" version="0.8">
  function addMobileBackButton() {
    const isMobileView = api.container.lookup('site:main').mobileView;
    if (isMobileView) {
      const existingButton = document.querySelector('.floating-back-button');
      if (!existingButton) {
        const backButton = document.createElement('button');
        backButton.className = 'floating-back-button';
        backButton.innerHTML = '&#8592;'; // Unicode per freccia sinistra
        backButton.onclick = (event) => {
          event.preventDefault();
          window.history.back();
        };
        document.body.appendChild(backButton);
      }
    }
  }

  // Aggiungi il pulsante al caricamento iniziale della pagina
  document.addEventListener('DOMContentLoaded', addMobileBackButton);

  // Ricontrolla le transizioni di pagina successive
  api.onPageChange(addMobileBackButton);
</script>

Passaggio 3: Aggiungi CSS per lo Stile

  1. Aggiungi gli Stili del Pulsante Indietro:
    • Nella scheda Mobile, fai clic sulla sezione CSS.
    • Incolla il seguente CSS:

css

Copia codice

.floating-back-button {
  position: fixed;
  bottom: 20px;
  left: 20px;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #0088cc; /* Personalizza il colore */
  color: #fff;
  border: none;
  font-size: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  z-index: 1000;
  cursor: pointer;
}

Passaggio 4: Applica il Componente Tema

  1. Torna ai Temi:
    • Naviga di nuovo su Admin > Personalizza > Temi.
  2. Modifica il Tuo Tema Attivo:
    • Fai clic sul tuo tema attivo.
    • Sotto Componenti Tema, aggiungi il componente “Pulsante Indietro Mobile” dal menu a discesa.
    • Fai clic su Aggiungi e poi su Salva.

Passaggio 5: Testa le Tue Modifiche

  1. Apri il Tuo Forum su Mobile:
    • Usa un browser mobile o simula la visualizzazione mobile usando gli strumenti per sviluppatori.
  2. Verifica il Pulsante Indietro:
    • Il pulsante dovrebbe apparire nell’angolo in basso a sinistra dello schermo.
    • Facendo clic sul pulsante dovresti tornare indietro nella cronologia del tuo browser.

Note:

  • Solo per Mobile: Poiché il codice e il CSS si trovano nella scheda Mobile, il pulsante apparirà solo sui dispositivi mobili.
  • Personalizzazione:
    • Puoi regolare la posizione, le dimensioni o il colore del pulsante nel CSS per adattarlo al design del tuo forum.
  • Funzionalità:
    • Il pulsante indietro utilizza window.history.back(). Se non c’è una pagina precedente, non navigherà da nessuna parte.

Non lo so, ma non c’è bisogno del pulsante indietro, perché lo scorrimento funziona benissimo.

2 Mi Piace

Forse c’è qualcosa che non va nella mia installazione, ma non sono riuscito a scorrere in modo coerente. Sto ancora imparando a usare Discourse.

Per Chrome, puoi scorrere dal bordo sinistro per tornare indietro.
Sui browser, anche il pulsante indietro del mio telefono funziona. Funziona anche per te?
Se non ricordo male, puoi usare api.onPageChange() e poi ottenere l’URL della pagina.
Vedi:

@Jagster ho scoperto un paio di cose che hanno influito sulla mia incapacità di comprendere l’esistenza dei gesti di scorrimento.

Sul mio iPhone lo scorrimento funziona benissimo. Ho due telefoni Android con Chrome. Uno scorre bene, l’altro è quasi impossibile da scorrere. Su Android, se installo la PWA, sembra che lo scorrimento smetta di funzionare del tutto. I telefoni sono tutti abbastanza nuovi, da 1 a 3 anni.

Non sono sicuro se sia stato riscontrato da altri?

@NateDhaliwal grazie! Ho appena pubblicato la mia esperienza con iPhone/Android, che è incoerente a seconda del dispositivo e non funziona su PWA.

Funziona. E su Android puoi anche scorrere indietro all’elenco dei forum sull’Hub App, il che è molto bello.

Anche tutti gli i-device, ma chi li conta :joy:

Ma per questo motivo i gesti falliscono per alcuni non ho spiegazioni. Ma tutti i miei utenti usano lo swiping tutto il tempo senza lamentele :man_shrugging: