Привет.
Я довольно новичок в создании плагинов для Discourse, но хотел бы узнать, не сможет ли кто-нибудь объяснить, как добавить дополнительную кнопку в меню поста. Насколько я понимаю, это должно решаться через кастомный плагин.
Например, кнопка «Заставил рассмеяться», которая работала бы аналогично кнопке «Нравится» — сохраняя количество людей, нажавших её на посте или комментарии.
Я знаю о плагине Retort, но он не решает мою задачу, так как меня больше интересует понимание того, как добавить эту кнопку.
Привет,
это непростая задача. По моему опыту, это должно реализовываться через плагин. Вам нужно будет добавить дополнительную кнопку в виджет post-menu, а также выполнить миграцию базы данных для хранения ваших реакций «заставил рассмеяться».
В качестве примера можно посмотреть плагин Discourse Solved:
Этот плагин также добавляет дополнительную кнопку в меню поста и реализует функционал, данные для которого хранятся в базе данных.
Обязательно прочитайте руководство для разработчиков по созданию плагинов:
Удачи.
Огромное спасибо, @zcuric! Я пытался разобраться в этом плагине, а также в Retort, но пока безрезультатно, однако продолжу двигаться в этом направлении.
Не могли бы вы также подсказать, как Discourse управляет отображением кнопки «Нравится»? В частности, как она скрывается на ваших собственных постах? Мне нужно сделать то же самое для моей пользовательской кнопки.
@marek Пожалуйста. Вы немного изучили код, начиная отсюда:
Что касается бэкенда, то это на 99% API-запрос. Я не углублялся в это. Скорее всего, это конечная точка (endpoint). Мой прогноз: при создании плагина вам придется реализовать маршруты REST API с конечными точками GET, POST, DELETE, которые будут заполнять данные вашего поля в базе данных, которое вы добавили с помощью миграции базы данных. Это будет сделано с помощью Rails. По крайней мере, именно так я бы подошел к этой ситуации.