Puis-je placer le formulaire de recherche en haut de notre page 404 ?

La conception actuelle privilégie les sujets populaires, qui par nature ont tendance à être généraux. Quelqu’un qui tombe sur une erreur 404 cherche probablement plutôt quelque chose de spécifique. À moins de deviner magiquement ce que c’était, il semble que fournir une boîte de recherche bien en évidence serait idéal. Je sais qu’elle est là en bas, mais… elle est plutôt difficile à trouver.) Existe-t-il un moyen simple de réorganiser cela ?

Et pendant que nous y sommes, quelque chose qui s’étend sur toute la page plutôt que la petite boîte actuelle en bas.

Il pourrait aussi être agréable de pré-remplir la recherche avec quelque chose construit à partir de l’URL non trouvée fournie. Mais je n’ai pas réfléchi à toutes les implications de cela.

4 « J'aime »

Quelque chose comme ça ?

Je pense que ce devrait être possible en masquant le composant page-not-found-search en bas avec un display: none puis en insérant le code de la barre de recherche en haut en utilisant les points de sortie des plugins : Using Plugin Outlet Connectors from a Theme or Plugin
Vous pourriez également ajouter du CSS pour modifier la largeur de la zone de texte. Notez que je n’ai pas vraiment testé tout cela, j’ai juste essayé directement dans la console du navigateur.

Voici le code pour la barre de recherche :

<div class="row">
    <div class="page-not-found-search-top">
      <h2>Rechercher sur ce site</h2>
      <p>
        </p><form action="/search" id="discourse-search">
          <input type="text" name="q" value="">
          <button class="btn btn-primary">Rechercher</button>
        </form>
      <p></p>
    </div>
</div>
3 « J'aime »

Exactement, oui, merci ! J’essaierai plus tard dans la journée.

2 « J'aime »

Pouvez-vous m’aider à déterminer quel est le bon point de sortie ici ? J’ai déjà utilisé le concept pour ajouter du texte explicatif à la page Badges, mais (deprecated) Plugin outlet locations theme component ne semble pas fonctionner sur la page 404 et je n’arrive pas à comprendre quoi mettre dans l’encapsuleur script.

2 « J'aime »

Il semble qu’il n’y ait pas de points d’extension de plugin dans la page 404, et selon How to add custom JS code to the 404 pages?, vous devez utiliser du JavaScript pur.

Essayez d’ajouter quelque chose comme ceci à l’onglet Body, dans un composant de thème :

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

Vous devrez peut-être faire quelques ajustements avec CSS, essayez :

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

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

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

J’espère que cela vous aidera !

8 « J'aime »

Oui, pas de plugins dans la page 404 introuvable, cela fonctionne à merveille avec vos instructions

collez ceci dans la balise BODY :

    var x = document.getElementsByClassName("page-not-found"); 
    var search = '<h2>Rechercher sur ce site</h2><p></p><form action="/search" id="discourse-search"><input type="text" name="q" value=""><button class="btn btn-primary">Rechercher</button></form><p></p>'
    x.item(0).innerHTML += search

et collez ceci dans la partie CSS :

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

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

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

fonctionne aussi sur mobile…

et merci pour votre réponse

Cordialement,

6 « J'aime »

Cela fonctionne à merveille. Il est temps pour moi de le personnaliser un peu plus.

:+1:

Modification : Cela a provoqué des erreurs dans mon journal d’erreurs.

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 « J'aime »

Je me réponds. J’ai encapsulé l’appel .innerHTML dans un bloc try/catch

<script type="text/javascript">
    var x = document.getElementsByClassName("page-not-found");
    var search = '<div class="page-not-found-search-top"><h2>Search this site</h2><p></p><form action="/search" id="discourse-search"><input type="text" name="q" value=""><button class="btn btn-primary">Search</button></form><p></p></div>'
    try {
        x.item(0).innerHTML += search
    } catch (error) {
    }
</script>
3 « J'aime »

nous sommes en activité et aucune erreur de notre côté

Cordialement,

1 « J'aime »

Merci @hhlp :slight_smile:

Et ça a l’air super ! Équipe Discourse, y a-t-il une raison pour que ce ne soit pas le défaut ?

1 « J'aime »

En regardant les anciens commits, la position de la barre de recherche semble être quelque chose qui vient de se produire ? Héritée de l’endroit où se trouvait auparavant la recherche Google, qui a été ajoutée lors de la sortie initiale de Discourse.

Je suis d’accord, elle est plus belle en haut.

4 « J'aime »

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