So erlauben Sie bestimmte HTML-Tags in der Anpassung

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:)

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…

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:

Hallo @tshenry,

könntest du mir bitte bei dem Code helfen, mit dem du GCSE in Discourse erstellt hast?

Vielen Dank

Hallo @yyhmsg,

könntest du mich bitte bei der Implementierung von GCSE unterstützen?

Leider kann ich nicht viel Hilfe bieten, da ich GCSE nicht mehr verwende. Es hat eine Weile funktioniert, aber ich habe mich allgemein von Google entfernt und es vor einigen Discourse-Versionen entfernt. Was oben gepostet wurde, hat funktioniert, aber ich musste viel damit herumspielen, sowohl wegen Problemen mit dem unendlichen Scrollen als auch aufgrund von Discourse-Änderungen.

Was hast du bereits versucht? Und welche Fehler oder Probleme treten auf?

Eine sauberere und einfachere Option, die kaum Wartung erfordert, könnte sein, einfach einen Button oben einzufügen, der zu einer von Google gehosteten Suchseite oder einer eigenen Seite irgendwo führt.

@yyhmsg,

Ich habe den Code implementiert und einige CSS-Änderungen vorgenommen, um ein Suchfeld zu erstellen. Wenn ich jedoch auf die Suchoption klicke, werde ich standardmäßig zur Discourse-Suche weitergeleitet und nicht zur Google-Suche. Hier stecke ich fest.

Wenn Sie es eingerichtet haben, es aber zum falschen Suchdienst weiterleitet, muss der Abfrageparametername wahrscheinlich geändert werden, damit beide nicht q= verwenden.

queryParameterName String Der Name des Abfrageparameters – zum Beispiel q (Standard) oder query. Dieser wird in die URL eingebettet (z. B. Example Domain).

Ihr GCSE müsste also so eingerichtet sein, dass ein anderer queryParameterName wie qr= verwendet wird. Wenn Sie dann eine Suche durchführen, antwortet nur GCSE, da Discourse q= erwartet.

Hallo @yyhmsg,

ich verwende das Overlay-Theme für GCSE. Ich möchte die Suchergebnisse auf derselben Seite anzeigen und nicht auf einer anderen Seite, da ich bei Discourse kein Zwei-Seiten-Format verwenden kann. Trotzdem fügt der Suchbutton den Query-String „?search=search+term

Es wäre am hilfreichsten, wenn Sie den von Ihnen verwendeten Code zeigen und, falls verfügbar, einen Link zur Website, an der Sie arbeiten, bereitstellen würden.

Hallo @yyhmsg,

die Website, an der ich arbeite, ist: mpl.co
Können wir uns per Google Meet oder ähnlichem verbinden, um den Bildschirm zu teilen? Bitte teilen Sie mir Ihre bevorzugte Zeit mit.

Vielen Dank.

Das geht leider nicht. Ich bin im Gesundheitswesen tätig und habe einen sehr vollen Terminkalender. Zwischen den Patienten habe ich nur wenige Minuten Zeit, um mich um Dinge wie diese zu kümmern.

Könnte ich vielleicht einen Plugin-Vorschlag machen wie diesen hier – GitHub - sylque/discpage: A Discourse plugin to create static pages and attach discussions to headings · GitHub – bei dem Sie den gesamten GCSE-Code auf der Seite einbetten und dann einfach einen Button in der Kopfzeile platzieren könnten, der auf diese Seite verlinkt. Das würde sich ziemlich sauber anfühlen…

Vielen Dank @yyhmsg, ich werde es von meiner Seite aus versuchen. Danke für deine Vorschläge.