Ich verwende derzeit das folgende Widget, um ein Banner/einen Link nach dem ersten Beitrag eines Threads anzuzeigen. Dies funktioniert bisher gut:
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',
),
]);
}
});
Ich möchte das Banner/den Link jedoch an einer anderen Stelle integrieren – nämlich vor dem Antwort-Button. Die Position habe ich unten rot markiert:
Kann mir jemand einen Tipp geben, wie ich das umsetzen kann?
Ich weiß, dass die Position/Aufgabe durch dieses hier definiert wird. Die Frage ist, wie ich dieses NAME:LOCATION finde:
api.decorateWidget("NAME:LOCATION", helper => {
Moin
12. Januar 2024 um 08:17
2
OrkoGrayskull:
nach dem ersten Beitrag
OrkoGrayskull:
Die von Ihnen auf dem Bild markierte Position befindet sich nach allen Beiträgen des Themas. Wenn es Antworten gibt, würde Ihr Banner darunter und nicht direkt nach dem ersten Beitrag angezeigt werden.
piffy
12. Januar 2024 um 08:17
3
Dort gibt es eine Plugin-Ausgabe namens topic-above-footer-buttons
Dies hilft Ihnen, sie zu sehen:
(deprecated) Plugin outlet locations theme component
Befolgen Sie dann diese Anleitung:
Discourse enthält hunderte von Plugin-Outlets, mit denen neue Inhalte in die Discourse-Oberfläche eingefügt oder vorhandene Inhalte ersetzt werden können. „Outlet-Argumente“ stehen zur Verfügung, damit Inhalte basierend auf dem Kontext angepasst werden können.
Auswahl eines Outlets
Um den Namen eines Plugin-Outlets zu finden, durchsuche den Discourse-Kern nach “<PluginOutlet” oder verwende das plugin outlet locations Theme-Component. (z. B. topic-above-posts).
Wrapper-Outlets
Einige Outlets im…
Danke. Es hat funktioniert.
Codebeispiel für 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>
Leider wird der Button/Banner nur angezeigt, wenn der Benutzer angemeldet ist. Wie kann ich sicherstellen, dass der Button/Banner auch für nicht registrierte Benutzer angezeigt wird?
Ich verwende diese Theme-Position: topic-footer-main-buttons-before-create