¿Puedo poner el formulario de búsqueda en la parte superior de nuestra página 404?

El diseño actual prioriza los temas populares, que por su naturaleza tienden a ser generales. Alguien que se encuentra con un 404 probablemente esté buscando algo específico. A falta de adivinar mágicamente qué era, parece que proporcionar prominentemente un cuadro de búsqueda sería ideal. Sé que está ahí abajo, pero… es difícil de encontrar.) ¿Hay alguna forma fácil de reorganizar esto?

Y ya que estamos, algo que se extienda por toda la página en lugar de la pequeña caja actual en la parte inferior.

También podría ser agradable pre-rellenar la búsqueda con algo construido a partir de la URL de no encontrado proporcionada. Pero no he pensado en todas las implicaciones de eso.

4 Me gusta

¿Algo como esto?

Creo que debería ser posible ocultando el componente page-not-found-search en la parte inferior con display: none y luego insertando el código del cuadro de búsqueda en la parte superior usando los puntos de conexión de complementos: Using Plugin Outlet Connectors from a Theme or Plugin
También podrías añadir algo de CSS para modificar el ancho del área de texto. Ten en cuenta que no he probado nada de esto realmente, solo lo he intentado directamente en la consola del navegador.

Este es el código para el cuadro de búsqueda:

<div class="row">
    <div class="page-not-found-search-top">
      <h2>Buscar en este sitio</h2>
      <p>
        </p><form action="/search" id="discourse-search">
          <input type="text" name="q" value="">
          <button class="btn btn-primary">Buscar</button>
        </form>
      <p></p>
    </div>
</div>
3 Me gusta

¡Me gusta mucho, sí, gracias! Lo probaré más tarde hoy.

2 Me gusta

¿Puedes ayudarme a averiguar cuál debería ser el outlet adecuado aquí? He usado el concepto antes para agregar texto explicativo a la página de Badges, pero (deprecated) Plugin outlet locations theme component no parece funcionar en la página 404 y no puedo averiguar qué poner en el wrapper script.

2 Me gusta

Parece que no hay puntos de conexión de complementos en la página 404 y, según How to add custom JS code to the 404 pages?, tienes que usar JS puro.

Intenta añadir algo como esto en la pestaña Body, en un componente de tema:

    <script type="text/javascript">
    var x = document.getElementsByClassName("page-not-found");
    var search = '<div class="page-not-found-search-top"><h2>Buscar en este sitio</h2><p></p><form action="/search" id="discourse-search"><input type="text" name="q" value=""><button class="btn btn-primary">Buscar</button></form><p></p></div>'
    x.item(0).innerHTML += search
    </script>

Puede que necesites hacer algunos ajustes con CSS, prueba:

.page-not-found-search {
    display: none;
}

.page-not-found-search-top button {
    margin-left: 10px;
}

.page-not-found-search-top input {
    width: 600px;
}

¡Espero que esto ayude!

8 Me gusta

Sí, sin complementos en la página 404 No encontrado, funciona de maravilla con tus instrucciones

Pega esto en la etiqueta BODY:

    var x = document.getElementsByClassName("page-not-found"); 
    var search = '<div class="page-not-found-search-top"><h2>Buscar en este sitio</h2><p></p><form action="/search" id="discourse-search"><input type="text" name="q" value=""><button class="btn btn-primary">Buscar</button></form><p></p></div>'
    x.item(0).innerHTML += search

y pega esto en la parte CSS:

.page-not-found-search {
    display: none;
}

.page-not-found-search-top button {
    margin-left: 10px;
}

.page-not-found-search-top input {
    width: 600px;
}

funciona también en el móvil…

y gracias por tu respuesta

Saludos.,

6 Me gusta

Esto funciona de maravilla. Es hora de que lo personalice un poco más.

:+1:

Editar: Esto ha provocado errores en mi registro de errores.

TypeError: null is not an object (evaluating 'x.item(0).innerHTML') Url: https://mysite.com/theme-javascripts/33ba1ce8896576423974ff03c875fe32931690cc.js?__ws=mysite.com Line: 2

1 me gusta

Respondiéndome a mí mismo. Envolví la llamada a .innerHTML en un bloque try/catch

<script type="text/javascript">
    var x = document.getElementsByClassName("page-not-found");
    var search = '<div class="page-not-found-search-top"><h2>Buscar en este sitio</h2><p></p><form action="/search" id="discourse-search"><input type="text" name="q" value=""><button class="btn btn-primary">Buscar</button></form><p></p></div>'
    try {
        x.item(0).innerHTML += search
    } catch (error) {
    }
</script>
3 Me gusta

Estamos en el negocio y no hay ningún error de nuestra parte.

Saludos.

1 me gusta

Gracias @hhlp :slight_smile:

¡Y se ve genial! Equipo de Discourse, ¿alguna razón por la que esto no sea lo predeterminado?

1 me gusta

Al mirar los commits antiguos, ¿la posición de la barra de búsqueda parece ser algo que acaba de suceder? Heredado de donde solía estar la búsqueda de Google, que se agregó con el lanzamiento inicial de Discourse.

Estoy de acuerdo en que se ve mejor en la parte superior.

4 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.