Прежде всего, приношу извинения за свой плохой английский.
Я хочу добавить кнопку «Показать ещё…».
Пост на изображении ниже состоит из 10 строк текста, но отображаются только 5 строк.
Пользователь может увидеть полный текст, нажав на кнопку «Показать ещё».
Я не знаю, как реализовать условие с помощью api.addPostMenuButton, поэтому в настоящее время эта кнопка отображается даже для небольших постов, состоящих всего из одной строки, как показано ниже.
Для меня это нежелательно.
Я думаю, что условная логика должна позволять получать высоту обработанного содержимого (COOKED) или количество строк (или символов).
Я изучил документацию, но не нашёл никаких опций для api.addPostMenuButton.
Любая помощь будет очень кстати.
Метод api.addPostMenuButton обращает внимание только на возвращаемое вами значение. Это значение должно быть объектом. Всё, что вы делаете до этого возврата, не имеет значения. Кнопка будет отображаться для каждого сообщения, а метод предоставляет вам объект post, который вы можете использовать в своей работе.
Например, допустим, я хочу, чтобы кнопка отображалась только в сообщениях, содержащих более 300 слов. В таком случае я могу сделать следующее.
common > header
<script type="text/discourse-plugin" version="0.8">
const MIN_WORD_COUNT = 300;
api.addPostMenuButton("myButton", (post) => {
// вы можете вывести свойства сообщения в консоль, чтобы увидеть, с чем работаете
// console.log(post);
// пример
const roughWordCount = post.cooked.match(/\S+/g).length;
if (roughWordCount < MIN_WORD_COUNT) {
// кнопка не будет отображена
return;
}
// кнопка будет отображена, создайте возвращаемый объект
const result = {
action: SOME_ACTION,
icon: ICON_NAME,
title: TITLE_TRANSLATION_KEY,
className: CLASSNAMES,
position: "first", // может быть `first`, `last` или `second-last-hidden`
};
// добавьте метку, если это десктопная версия
if (!post.mobileView) {
result.label = LABLE_TRANSLATION_KEY;
}
// верните объект
return result;
});
</script>
Замените текст заглавными буквами на реальные данные и попробуйте это на сообщении, содержащем более 300 слов. Вы увидите, что кнопка отобразится там.