Comment autoriser certains balises HTML dans la personnalisation

I’m trying to add the google custom search engine to the header of our discourse forum. I put in the javascript to the head tag and then in the body there is something like <gcse:search linkTarget="_self"></gcse:search> - which will show the google custom search engine.

When I put this in and save it however, it doesn’t show up on the site. I imagine it is being removed by some sort of html filter? (and I should add that by “doesn’t show up” I mean the code itself, not just that the javascript isn’t loading somehow - when I surround it with <!-- -->, the code passes through, but obviously doesn’t work).

Is there a way to get this to pass through?

Thanks!

Looking at this it apparently strips gcse - so I get:

<search linktarget=\"_self\"><\/search>

Which doesn’t load anything

Instead of <gcse:search linkTarget="_self"></gcse:search> it strips out the : and the /gcse

I tried <gcse\:search><\/gcse\:search> but then I get <gcse search> (no : ) and </gcse> (no : or search)

Is there another way to get a variable to pass through the customization editor so that I can get it to show up?

This is just a proof of concept, so you’ll have to play around with it to see how/if it can work for your needs. Try adding this to the </head> tab of a theme:

<script type="text/discourse-plugin" version="0.8.18">
    api.decorateWidget('header-contents:after', helper => {
        return helper.rawHtml(`<gcse:search linkTarget="_self"></gcse:search>`);
    });
</script>

(Edit: improved the answer a little after having more time to look at it :slightly_smiling_face:)

5 « J'aime »

That’s awesome - Thanks! Works perfectly. Both versions seemed to work the same, but I went with your current edit.

Actually I may have spoke a little too soon… It’s fairly intermittent when it will show up. I had both versions of your script in so I thought this newer one was working (and it did once - minus putting the search bar on top of the menu, etc. - lower half of the header).

The first script appears to work on the front page only if I put in at the body close section - then it shows up at the top of the page oddly.

I’d like to try to get it right below the header bar on top on every page.

Instead of ‘header-contents:after’ - is there a ‘body-contents:before’? that I could try. I went through the api docs, but couldn’t find anything that showed such a declaration…

1 « J'aime »

Sure, if you change it from header-contents:after to just header:after, that should do the trick. You will need to style it with CSS to get it exactly how you want it, but that should get you on track :slightly_smiling_face:

3 « J'aime »

Bonjour @tshenry,

Pourriez-vous s’il vous plaît m’aider avec le code expliquant comment vous avez réussi à créer GCSE sur Discourse ?

Merci.

Bonjour @yyhmsg,

Pourriez-vous s’il vous plaît m’aider avec la mise en œuvre du GCSE ?

Malheureusement, je ne peux pas beaucoup vous aider car je n’utilise plus GCSE. Je l’avais fait fonctionner pendant un certain temps, mais j’ai fini par m’éloigner de Google en général et je l’ai supprimé il y a plusieurs versions de Discourse. Ce qui a été publié ci-dessus fonctionnait, mais j’ai dû beaucoup le modifier pour résoudre les problèmes de défilement infini et les changements apportés à Discourse.

Qu’avez-vous essayé ? Et quelles sont les erreurs ou les problèmes rencontrés ?

Une option plus propre et plus simple, qui ne devrait pas nécessiter beaucoup de gestion, serait d’ajouter simplement un bouton en haut menant à une page de recherche hébergée par Google ou à quelque chose de votre propre choix quelque part.

1 « J'aime »

@yyhmsg,

J’ai implémenté le code et apporté quelques modifications CSS pour créer une boîte de recherche. Cependant, lorsque je clique sur l’option de recherche, cela m’oriente par défaut vers la recherche de Discourse et non vers la recherche Google. C’est là que je suis bloqué.

Si vous l’avez configuré mais qu’il redirige vers le mauvais outil de recherche, c’est probablement que le paramètre de requête doit être modifié afin que les deux ne soient pas q=.

queryParameterName Chaîne Le nom du paramètre de requête — par exemple, q (par défaut) ou query. Il sera intégré dans l’URL (par exemple, Example Domain).

Ainsi, votre GCSE devrait être configuré pour utiliser un nom de paramètre de requête différent, comme qr=. De cette façon, lors de la soumission d’une recherche, seul GCSE répondra, car Discourse s’attend à ce que le paramètre soit q=.

Bonjour @yyhmsg,

J’utilise le thème Overlay pour GCSE. Je souhaite afficher les résultats de recherche sur la même page et non sur une page différente, car je ne peux pas utiliser le format à deux pages avec Discourse. Cependant, le bouton de recherche ajoute toujours la chaîne de requête “?search=search+term”.
Cela ne produit aucun résultat de recherche et affiche “Aucun sujet récent”.
Y a-t-il quelque chose que j’aurais manqué ?
Merci d’avance.

Ce serait d’une grande aide si vous pouviez montrer le code que vous utilisez et, si disponible, un lien vers le site sur lequel vous travaillez.

Bonjour @yyhmsg,

Le site web sur lequel je travaille est : mpl.co
Pouvons-nous nous connecter sur Google Meet ou un autre outil pour partager l’écran ? Veuillez me faire savoir votre heure de préférence.

Merci.

Je ne peux malheureusement pas, je suis un professionnel de la santé avec un emploi du temps chargé ; je n’ai que quelques minutes entre deux patients pour travailler sur des choses comme celle-ci.

Pourrais-je suggérer quelque chose comme ce plugin - GitHub - sylque/discpage: A Discourse plugin to create static pages and attach discussions to headings · GitHub - où vous pourriez potentiellement placer tout le code GCSE en page, puis simplement ajouter un bouton dans l’en-tête qui lie à cette page. Cela semble être une solution assez propre…

Merci @yyhmsg, je vais essayer de mon côté. Merci pour vos suggestions.