Comment ajouter un bouton de retour flottant dans Discourse (pour les utilisateurs mobiles)

Je vois qu’il y a eu des sujets sur la navigation avec un bouton retour pour les navigateurs mobiles et je n’ai pas trouvé de solution, bien que j’aie peut-être manqué quelque chose :thinking:

Je ne suis pas un codeur et je ne suis pas assez compétent avec Discourse pour faire des choses dangereuses :wink: mais j’ai réussi à bricoler avec ChatGPT pour créer le bouton retour BLEU fonctionnel sur cette image avec mon chiot.

Je veux le masquer sur des pages spécifiques mais je n’ai pas encore trouvé comment masquer des éléments. Si quelqu’un sait, je l’ajusterai et l’ajouterai aux instructions.

Comment ajouter un bouton retour flottant dans Discourse (pour les utilisateurs mobiles)

Ce guide vous aide à ajouter un bouton “Retour” flottant pour les appareils mobiles sur votre forum Discourse. Il garantit que le bouton n’apparaît que pour les utilisateurs mobiles et améliore la navigation pour les applications ou les navigateurs qui n’ont pas de boutons retour intégrés.


Étape 1 : Créer un nouveau composant de thème

  1. Connectez-vous en tant qu’administrateur :
    • Accédez à votre forum Discourse et connectez-vous avec un compte administrateur.
  2. Accéder à la personnalisation des thèmes :
    • Naviguez vers Admin > Personnaliser > Thèmes.
  3. Créer un composant de thème :
    • Cliquez sur Composants.
    • Cliquez sur Installer > Créer nouveau.
    • Nommez le composant “Bouton retour mobile” et cliquez sur Créer.

Étape 2 : Ajouter le code du bouton retour

  1. Modifier le composant de thème :
    • Cliquez sur le composant de thème nouvellement créé.
    • Accédez à la section CSS/HTML.
  2. Ajouter du JavaScript pour le bouton retour :
    • Basculez vers l’onglet Mobile.
    • Cliquez sur la section </head>.
    • Collez le code suivant :

html

Copier le code

<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 pour la flèche gauche
        backButton.onclick = (event) => {
          event.preventDefault();
          window.history.back();
        };
        document.body.appendChild(backButton);
      }
    }
  }

  // Ajouter le bouton au chargement initial de la page
  document.addEventListener('DOMContentLoaded', addMobileBackButton);

  // Revérifier lors des transitions de page ultérieures
  api.onPageChange(addMobileBackButton);
</script>

Étape 3 : Ajouter du CSS pour le style

  1. Ajouter les styles du bouton retour :
    • Dans l’onglet Mobile, cliquez sur la section CSS.
    • Collez le CSS suivant :

css

Copier le code

.floating-back-button {
  position: fixed;
  bottom: 20px;
  left: 20px;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #0088cc; /* Personnaliser la couleur */
  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;
}

Étape 4 : Appliquer le composant de thème

  1. Retourner aux thèmes :
    • Naviguez de nouveau vers Admin > Personnaliser > Thèmes.
  2. Modifier votre thème actif :
    • Cliquez sur votre thème actif.
    • Sous Composants de thème, ajoutez le composant “Bouton retour mobile” à partir de la liste déroulante.
    • Cliquez sur Ajouter, puis sur Enregistrer.

Étape 5 : Tester vos modifications

  1. Ouvrez votre forum sur mobile :
    • Utilisez un navigateur mobile ou simulez la vue mobile à l’aide des outils de développement.
  2. Vérifier le bouton retour :
    • Le bouton doit apparaître dans le coin inférieur gauche de l’écran.
    • Cliquer sur le bouton devrait vous ramener dans l’historique de votre navigateur.

Notes :

  • Pour mobile uniquement : Étant donné que le code et le CSS se trouvent dans l’onglet Mobile, le bouton n’apparaîtra que sur les appareils mobiles.
  • Personnalisation :
    • Vous pouvez ajuster la position, la taille ou la couleur du bouton dans le CSS pour qu’il corresponde au design de votre forum.
  • Fonctionnalité :
    • Le bouton retour utilise window.history.back(). S’il n’y a pas de page précédente, il ne naviguera nulle part.

Je ne sais pas, mais il n’y a pas besoin de bouton retour, car le balayage fonctionne très bien.

2 « J'aime »

Peut-être que quelque chose ne va pas dans mon installation, mais je n’ai pas pu balayer de manière cohérente. J’apprends encore à naviguer dans Discourse.

Pour Chrome, vous pouvez balayer depuis le bord gauche pour revenir en arrière.
Sur les navigateurs, le bouton retour de mon téléphone fonctionne également. Est-ce que ça marche pour vous ?
Si je me souviens bien, vous pouvez utiliser api.onPageChange() puis obtenir l’URL de la page.
Voir :

@Jagster J’ai donc découvert plusieurs choses qui ont affecté mon manque de compréhension de l’existence des gestes de balayage.

Sur mon iPhone, le balayage fonctionne très bien. J’ai deux téléphones Android avec Chrome. L’un se balaye bien, l’autre est presque impossible à balayer. Sur Android, si j’installe le PWA, cela semble arrêter complètement le balayage. Les téléphones sont tous récents, âgés de 1 à 3 ans.

Je ne sais pas si d’autres ont déjà rencontré ce problème ?

@NateDhaliwal merci ! Je viens de publier ce que j’ai vécu avec iPhone/Android, qui est incohérent selon l’appareil et ne fonctionne pas sur PWA.

C’est le cas. Et sur Android, vous pouvez même revenir en arrière vers la liste des forums sur l’application Hub, ce qui est très cool.

Tous les i-devices le font, mais qui compte :joy:

Mais pour cela, pourquoi les gestes échouent pour certains, je n’ai aucune explication. Mais tous mes utilisateurs utilisent le balayage tout le temps sans se plaindre :man_shrugging: