Wie oben erwähnt, habe ich im Forum gesucht und nur die Änderung der Sicherheit von Kategorien gefunden, aber dies macht alle Kategorien unsichtbar, was nicht die Funktion ist, die ich benötige.
Mein Anwendungsfall ist: Nicht registrierte Benutzer können einen Teil des Beitragsinhalts einsehen, und der versteckte Teil kann nur nach der Anmeldung eingesehen werden. Oder registrierte Benutzer müssen auf den Beitrag antworten, um ihn einsehen zu können.
Dies ist ein Mittel, um Registrierungen zu fördern und die meisten „Mitnehmer“ abzuschrecken.
Wie man die Funktion des Einloggens zur Ansicht von Inhalten erreicht, um Benutzer besser zur Registrierung zu bewegen
Wie in der Frage erwähnt, habe ich im Forum gesucht und nur die Sicherheit des Änderns von Kategorien gefunden, aber dies macht nur alle Kategorien unsichtbar, was nicht die Funktion ist, die ich benötige.
Mein Anwendungsszenario ist: Nicht registrierte Benutzer können einen Teil des Beitragsinhalts anzeigen, während versteckte Inhalte nur durch Einloggen angezeigt werden können. Alternativ müssen Sie, um sich als Benutzer zu registrieren, auf den Beitrag antworten, um ihn anzeigen zu können.
Dies ist ein Mittel, um Registrierungen zu fördern und auch die Mehrheit der “Reaching Out Parties” abzuhalten.
Ist das, wonach Sie fragen, ähnlich dem, was viele Zeitungen tun? Zum Beispiel kann ich als anonymer Benutzer die Titelseite und die Kategorieseiten der New York Times aufrufen:
Der Grund, warum ich auf diese Weise frage, ist, dass ich denke, dass die Idee schon ein paar Mal in diesem Forum erwähnt wurde. Ich mag die Idee. Es könnte nützlich sein zu zeigen, dass dies eine übliche Methode ist, wie abonnementbasierte Publikationen Benutzer zum Abonnieren bewegen. Die Idee könnte für einige Discourse-Seiten nützlich sein – insbesondere für Seiten, die versuchen, zahlende Abonnenten zu gewinnen.
Ja, Simon, denn meine Website wird viele Software-Download-Links haben, aber ich möchte nicht, dass nicht registrierte Benutzer sie sehen und anklicken. Vielen Dank für Ihre Antwort!
Ich würde es sehr begrüßen, wenn es wie der Spoiler-Modus wäre.—\u003e Download-Links Wenn ein nicht registrierter Benutzer klickt, erscheint ein Registrierungs-Pop-up-Fenster oder ein Zahlungs-Pop-up-Fenster, was sehr elegant wäre.
„Inhalt kann nicht ohne Antwort angezeigt werden“ – Aktive Benutzer teilen ihre Kenntnisse selbstlos und möchten mehr Antworten auf ihre Beiträge. Das wünschen sich auch die Forenbetreiber. Ich denke, diese Funktion ist für die Entwicklung des Forums von Vorteil.
Ich werde versuchen, dieses Plugin zu verwenden. Danke, Lilly!
Gern geschehen, ich hoffe, es funktioniert für Sie. Beachten Sie einfach, dass es sich um eine Theme-Komponente und nicht um ein Plugin handelt, sodass Sie es über die Admin-Benutzeroberfläche installieren können.
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.