В настоящее время я использую следующий виджет для отображения баннера/ссылки после первого сообщения в теме. Пока это работает отлично:
<script type="text/discourse-plugin" version="0.8">
const { iconNode } = require("discourse-common/lib/icon-library");
api.decorateWidget("post:after", helper => {
const firstPost = helper.attrs.firstPost;
const h = helper.h;
if (firstPost) {
return h("div#support", [
h(
'a.icon', {
href:'link',
title: 'Support-Icon'
}, iconNode('heart')),
h(
'a.link', {
href: "link",
title: 'Support-Link'
}, 'some text',
),
]);
}
});
</script>
Однако я хотел бы разместить баннер/ссылку в другом месте — а именно перед кнопкой ответа. Я отметил это место красным на изображении ниже:
Не мог бы кто-нибудь подсказать, как это реализовать?
Я знаю, что позиция/задача определяется следующим кодом. Вопрос в том, как найти это NAME:LOCATION:
api.decorateWidget("NAME:LOCATION", helper => {
Moin
12.Январь.2024 08:17:00
2
OrkoGrayskull:
после первого сообщения
OrkoGrayskull:
Позиция, которую вы отметили на изображении, находится после всех сообщений темы. Таким образом, когда появятся ответы, ваш баннер будет располагаться под ними, а не сразу под первым сообщением.
piffy
12.Январь.2024 08:17:57
3
Там есть выход для плагинов под названием topic-above-footer-buttons
Это поможет вам их увидеть:
(deprecated) Plugin outlet locations theme component
Затем следуйте этому руководству:
Discourse включает в себя сотни Plugin Outlets, которые можно использовать для вставки нового контента или замены существующего контента в интерфейсе Discourse. Аргументы аутлета (Outlet arguments) доступны для того, чтобы контент мог быть настроен в зависимости от контекста.
Выбор аутлета
Чтобы найти имя плагин-аутлета, выполните поиск по ядру Discourse на строку “<PluginOutlet” или используйте компонент темы plugin outlet locations . (например, topic-above-posts).
Обёрточные аутлеты (Wrapper …
Спасибо. Всё сработало.
Пример кода для Head:
<script type='text/x-handlebars' data-template-name='/connectors/topic-footer-main-buttons-before-create/team-support'>
<div id="support">
<a href="link" title="Support-Icon" class="icon">
<svg class="fa d-icon d-icon-heart svg-icon svg-node" aria-hidden="true"><use xlink:href="#heart"></use></svg>
</a>
<a href="link" title="Support-Link" class="link">text</a>
</div>
</script>
К сожалению, кнопка/баннер отображается только для авторизованных пользователей. Как сделать так, чтобы кнопка/баннер была видна и незарегистрированным пользователям?
Я использую эту позицию темы: topic-footer-main-buttons-before-create