Zunächst entschuldige ich mich für mein schlechtes Englisch.
Ich möchte einen „Mehr anzeigen…“-Button hinzufügen.
Der Beitrag im Bild unten besteht aus 10 Textzeilen, aber nur 5 Zeilen werden angezeigt.
Der Benutzer kann den vollständigen Text sehen, indem er auf „Mehr anzeigen“ klickt.
Dieser Button sollte verzweigt werden, um einen Button zu geben oder nicht zu geben, abhängig von der Höhe des gekochten Teils jedes Beitrags oder der Anzahl der Zeilen.
Ich weiß nicht, wie ich mit api.addPostMenuButton verzweigen kann, daher erhält auch ein kleiner Beitrag mit nur einer Zeile wie der folgende diesen Button.
Das ist für mich nicht sehr wünschenswert.
Ich denke, dass die bedingte Verzweigung die Höhe des GEKOCHTEN oder die Anzahl der Zeilen (oder Zeichen) abrufen können sollte.
Ich habe die Dokumentation gelesen, aber keine Optionen für api.addPostMenuButton gefunden.
Jede Hilfe wäre sehr willkommen.
Die Methode api.addPostMenuButton achtet nur auf den Wert, den Sie zurückgeben. Dieser Wert muss ein Objekt sein. Alles, was Sie vor dieser Rückgabe tun, spielt keine Rolle. Der Button wird für jeden Beitrag gerendert, und die Methode gibt Ihnen das post-Objekt, das Sie für Ihre Arbeit verwenden können.
Nehmen wir zum Beispiel an, ich möchte, dass der Button nur bei Beiträgen angezeigt wird, die mehr als 300 Wörter haben. Dann kann ich Folgendes tun.
common > header
<script type="text/discourse-plugin" version="0.8">
const MIN_WORD_COUNT = 300;
api.addPostMenuButton("myButton", (post) => {
// Sie können die Post-Eigenschaften protokollieren, um zu sehen, womit Sie arbeiten können
// console.log(post);
// Beispiel
const roughWordCount = post.cooked.match(/\S+/g).length;
if (roughWordCount < MIN_WORD_COUNT) {
// Button wird nicht gerendert
return;
}
// Button wird gerendert, erstellen Sie das Rückgabeobjekt
const result = {
action: SOME_ACTION,
icon: ICON_NAME,
title: TITLE_TRANSLATION_KEY,
className: CLASSNAMES,
position: "first", // kann `first`, `last` oder `second-last-hidden` sein
};
// fügen Sie ein Label hinzu, wenn auf dem Desktop
if (!post.mobileView) {
result.label = LABLE_TRANSLATION_KEY;
}
// geben Sie das Objekt zurück
return result;
});
</script>
Ändern Sie die Großbuchstaben in tatsächliche Daten und probieren Sie es mit einem Beitrag aus, der mehr als 300 Wörter hat. Sie werden sehen, dass er dort gerendert wird.