Das ist einfach zu bewerkstelligen. Im Topic-Modell gibt es ein Attribut, das anzeigt, ob Sie bereits geantwortet haben. Es heißt posted. Ich habe früher eine Komponente geschrieben ( Composer tip under specific tag topics ), die prüft, ob Sie bereits geantwortet haben. Wenn Sie programmieren können, können Sie sich ansehen, was ich geschrieben habe. In Kombination mit der decorateCookedElement-Methode der API kann dies implementiert werden.
Ich bin zu faul, den spezifischen Code zu schreiben. Ich war in letzter Zeit sehr beschäftigt.
<script type="text/discourse-plugin" version="1.6.0">
const user = api.getCurrentUser();
const I18n = require("I18n");
const pid = "post_hider"
const tl4_css = `
.d-editor-preview [data-theme-hide] {
background: var(--tertiary);
color: var(--secondary);
border-top: 2px solid var(--secondary);
position: sticky;
top: 0;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.d-editor-preview [data-theme-hide]::before {
content: "Dieser Beitrag wurde zum Verbergen markiert";
}
`
api.addPostClassesCallback((attrs) => {
if (attrs?.cooked?.includes(`div data-theme-hide="true"`)) {
return ["hiddened"]; // Wird für CSS verwendet, wie Sie es als Nächstes schreiben, hängt von Ihnen ab
} else {
return [];
}
});
if (!user) {
api.decorateCookedElement((el, helper) => {
function hide_post() {
setTimeout(() => {
try {
// document.querySelector(`[data-post-id="${helper?.widget?.attrs?.id}"]`)?.parentElement?.remove();
} catch (err) {
console.log(el);
console.log(err);
}
}, 1000);
}
if (el?.querySelector(`[data-theme-hide="true"]`)) {
el.innerHTML = `<p>Der Beitrag wurde von der Community ausgeblendet</p>`; // Ändern Sie diese Zeile
hide_post();
}
}, {
id: pid,
afterAdopt: true,
onlyStream: true,
});
}
</script>
Ich erinnere mich, dass ich hier einen Code hatte, den ich früher verwendet habe, um den gesamten Beitrag für nicht angemeldete Benutzer auszublenden. Sie können ihn als Referenz verwenden.