How To Allow Certain HTML tags in Customization

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:

Привет, @tshenry,

Не могли бы вы помочь мне с кодом, с помощью которого вы смогли настроить GCSE в Discourse?

Спасибо.

Привет @yyhmsg,

Не могли бы вы помочь мне с внедрением GCSE.

К сожалению, я не могу предложить много помощи, так как больше не использую gcse. У меня это работало какое-то время, но я в итоге перешел от Google в целом и удалил его несколько версий назад. То, что было опубликовано выше, работало, но мне пришлось немало повозиться с ним из-за проблем с бесконечной прокруткой и изменений в Discourse.

Что вы уже пробовали? Какие ошибки или проблемы возникли?

Более чистый и простой вариант, который не требует особого управления, — это просто добавить кнопку вверху, ведущую на страницу поиска, размещенную Google, или на что-то подобное, размещенное вами где-либо.

@yyhmsg,

Я реализовал код. Внёс некоторые изменения в CSS для создания поля поиска. Однако при нажатии на опцию поиска меня по умолчанию перекидывает на поиск Discourse, а не на поиск Google. Вот где я застрял.

Если вы уже всё настроили, но запрос отправляется не в тот поисковый инструмент, скорее всего, нужно изменить параметр queryParameterName, чтобы в обоих случаях использовалось не q=.

queryParameterName String Имя параметра запроса — например, q (по умолчанию) или query. Этот параметр будет встраиваться в URL (например, Example Domain).

Таким образом, ваш GCSE должен быть настроен на использование другого имени параметра запроса, например qr=. Тогда при отправке поиска отвечать будет только GCSE, поскольку Discourse ожидает параметр q=.

Привет, @yyhmsg,

Я использую тему Overlay для GCSE. Мне нужно отображать результаты поиска на той же странице, а не на отдельной, так как я не могу использовать двухстраничный формат в Discourse. Однако кнопка поиска по-прежнему добавляет строку запроса “?search=search+term”.

Это не приводит к отображению результатов поиска — появляется сообщение “Нет новых тем”.

Неужели я что-то упускаю?
Заранее спасибо.

Было бы очень полезно, если бы вы показали код, который вы используете, и, если возможно, ссылку на сайт, над которым вы работаете.

Привет, @yyhmsg,

Сайт, над которым я работаю: mpl.co
Можно ли нам созвониться в Google Meet или в другой программе, чтобы поделиться экраном? Пожалуйста, сообщите, какое время вам удобно.

Спасибо.

К сожалению, я не могу, так как я медицинский работник с плотным графиком: у меня есть лишь несколько минут между пациентами, чтобы заняться подобными вещами.

Могу предложить вот такой плагин — GitHub - sylque/discpage: A Discourse plugin to create static pages and attach discussions to headings · GitHub, где можно разместить весь код встраиваемого GCSE, а затем просто добавить кнопку в заголовок, ведущую на эту страницу. Это, кажется, выглядело бы довольно аккуратно…

Спасибо, @yyhmsg, попробую с моей стороны. Спасибо за ваши предложения.