Tout d’abord, je m’excuse pour mon mauvais anglais.
Je veux ajouter un bouton « Afficher plus… ».
Le message dans l’image ci-dessous se compose de 10 lignes de texte, mais seulement 5 lignes sont affichées.
L’utilisateur peut voir le texte complet en cliquant sur Afficher plus.
Je ne sais pas comment faire une branche avec api.addPostMenuButton, donc actuellement même un petit message avec une seule ligne comme suit se voit attribuer ce bouton.
Ce n’est pas très souhaitable pour moi.
Je pense que la branche conditionnelle devrait pouvoir obtenir la hauteur du TRAITÉ ou le nombre de lignes (ou de caractères).
J’ai consulté la documentation, mais je n’ai trouvé aucune option pour api.addPostMenuButton.
Toute aide serait grandement appréciée.
La méthode api.addPostMenuButton ne se soucie que de la valeur que vous retournez. Cette valeur doit être un objet. Tout ce que vous faites avant ce retour n’a pas d’importance. Le bouton sera rendu pour chaque publication, et la méthode vous donne l’objet post que vous pouvez utiliser pour votre travail.
Par exemple, disons que je veux que le bouton n’apparaisse que sur les publications de plus de 300 mots. Je peux alors faire quelque chose comme ceci.
common > header
<script type="text/discourse-plugin" version="0.8">
const MIN_WORD_COUNT = 300;
api.addPostMenuButton("myButton", (post) => {
// vous pouvez enregistrer les propriétés de la publication pour voir ce que vous avez
// console.log(post);
// exemple
const roughWordCount = post.cooked.match(/\S+/g).length;
if (roughWordCount < MIN_WORD_COUNT) {
// le bouton ne sera pas rendu
return;
}
// le bouton sera rendu, créez l'objet de retour
const result = {
action: SOME_ACTION,
icon: ICON_NAME,
title: TITLE_TRANSLATION_KEY,
className: CLASSNAMES,
position: "first", // peut être `first`, `last` ou `second-last-hidden`
};
// ajoutez une étiquette si sur ordinateur
if (!post.mobileView) {
result.label = LABLE_TRANSLATION_KEY;
}
// retournez l'objet
return result;
});
</script>
Changez les éléments en majuscules en données réelles et essayez sur une publication de plus de 300 mots. Vous verrez qu’elle s’affiche là.