Cómo agregar un botón de volver flotante en Discourse (para usuarios móviles)

Veo que ha habido temas sobre la navegación con el botón de retroceso móvil para navegadores móviles y no encontré una solución, aunque quizás me la perdí :thinking:

No soy programador y no tengo la suficiente experiencia con Discourse como para hacer algo peligroso :wink:, pero logré con ChatGPT crear el botón de retroceso AZUL que funciona en esta imagen con mi cachorro.

Quiero ocultarlo en páginas específicas, pero aún no he descubierto cómo ocultar elementos. Si alguien sabe, ajustaré y añadiré a las instrucciones.

Cómo Añadir un Botón de Retroceso Flotante en Discourse (Para Usuarios Móviles)

Esta guía te ayuda a añadir un botón de “Retroceder” flotante para dispositivos móviles en tu foro de Discourse. Asegura que el botón aparezca solo para usuarios móviles y mejora la navegación para aplicaciones o navegadores que carecen de botones de retroceso integrados.


Paso 1: Crear un Nuevo Componente de Tema

  1. Iniciar sesión como Administrador:
    • Ve a tu foro de Discourse e inicia sesión con una cuenta de administrador.
  2. Acceder a la Personalización de Temas:
    • Navega a Admin > Personalizar > Temas.
  3. Crear un Componente de Tema:
    • Haz clic en Componentes.
    • Haz clic en Instalar > Crear Nuevo.
    • Nombra el componente “Botón de Retroceso Móvil” y haz clic en Crear.

Paso 2: Añadir el Código del Botón de Retroceso

  1. Editar el Componente de Tema:
    • Haz clic en el componente de tema recién creado.
    • Ve a la sección CSS/HTML.
  2. Añadir JavaScript para el Botón de Retroceso:
    • Cambia a la pestaña Móvil.
    • Haz clic en la sección </head>.
    • Pega el siguiente código:

html

Copiar código

<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 para flecha izquierda
        backButton.onclick = (event) => {
          event.preventDefault();
          window.history.back();
        };
        document.body.appendChild(backButton);
      }
    }
  }

  // Añadir el botón al cargar la página inicial
  document.addEventListener('DOMContentLoaded', addMobileBackButton);

  // Volver a comprobar en transiciones de página posteriores
  api.onPageChange(addMobileBackButton);
</script>

Paso 3: Añadir CSS para el Estilo

  1. Añadir los Estilos del Botón de Retroceso:
    • En la pestaña Móvil, haz clic en la sección CSS.
    • Pega el siguiente CSS:

css

Copiar código

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

Paso 4: Aplicar el Componente de Tema

  1. Volver a Temas:
    • Navega de nuevo a Admin > Personalizar > Temas.
  2. Editar tu Tema Activo:
    • Haz clic en tu tema activo.
    • En Componentes de Tema, añade el componente “Botón de Retroceso Móvil” desde el menú desplegable.
    • Haz clic en Añadir y luego en Guardar.

Paso 5: Probar tus Cambios

  1. Abrir tu Foro en Móvil:
    • Usa un navegador móvil o simula la vista móvil utilizando las herramientas de desarrollador.
  2. Verificar el Botón de Retroceso:
    • El botón debería aparecer en la esquina inferior izquierda de la pantalla.
    • Hacer clic en el botón debería navegarte hacia atrás en el historial de tu navegador.

Notas:

  • Solo para Móviles: Dado que el código y el CSS están en la pestaña Móvil, el botón solo aparecerá en dispositivos móviles.
  • Personalización:
    • Puedes ajustar la posición, el tamaño o el color del botón en el CSS para que coincida con el diseño de tu foro.
  • Funcionalidad:
    • El botón de retroceso utiliza window.history.back(). Si no hay una página anterior, no navegará a ningún lado.

No lo sé, pero no hay necesidad de botón de retroceso, porque deslizar funciona perfectamente.

2 Me gusta

Quizás tenga algo mal en mi instalación, pero no pude deslizar de manera consistente. Todavía estoy aprendiendo a usar Discourse.

Para Chrome, puedes deslizar desde el borde izquierdo para retroceder.
En los navegadores, el botón de retroceso de mi teléfono también funciona. ¿Te funciona a ti?
Si mal no recuerdo, puedes usar api.onPageChange() y luego obtener la URL de la página.
Ver:

@Jagster he descubierto un par de cosas que han afectado mi falta de comprensión de la existencia de los gestos de deslizamiento.

En mi iPhone, el deslizamiento funciona muy bien. Tengo dos teléfonos Android con Chrome. Uno se desliza bien y el otro es casi imposible de deslizar. En Android, si instalo la PWA, parece que deja de funcionar por completo. Los teléfonos son relativamente nuevos, de 1 a 3 años de antigüedad.

¿No estoy seguro de si esto lo han experimentado otros?

@NateDhaliwal ¡gracias! Acabo de publicar sobre mi experiencia con iPhone/Android, que es inconsistente según el dispositivo y no funciona en PWA.

Funciona. Y en Android incluso puedes deslizar hacia atrás a la lista de foros en la aplicación Hub, lo cual es genial.

Todos los i-devices también, pero ¿quién lleva la cuenta? :joy:

Pero para eso, por qué los gestos fallan para algunos, no tengo explicaciones. Pero todos mis usuarios usan el deslizamiento todo el tiempo sin quejas :man_shrugging: