Привет! Есть ли способ не создавать тему автоматически для каждой опубликованной на нашем сайте записи в блоге, но при этом сохранить раздел обсуждений?
Мне кажется логичнее создавать тему автоматически только тогда, когда под определённой записью в блоге появляется комментарий. В настоящее время логика такова, что тема должна существовать до того, как люди смогут оставлять комментарии.
Чтобы прояснить: мы не используем никакую другую систему комментариев, кроме Discourse. Поэтому мы хотим создавать тему только тогда, когда есть реальный комментарий к посту, а не множество пустых тем в Discourse, как показано ниже:
Не совсем… Как пользователи должны отвечать на тему, если она ещё нигде не опубликована? Каждая тема должна начинаться с нуля ответов. Думаю, я что-то упускаю
По-моему, вам нужно, чтобы все темы, импортируемые на Discourse с вашего сайта, помечались как скрытые. Когда к теме появится комментарий, она автоматически помечается как видимая. Скрытые темы не отображаются в списке тем, поэтому это предотвратит заполнение списка тем на вашем сайте темами без ответов.
Такая конфигурация имеет смысл для сайтов, где пользователи получают доступ к темам Discourse, нажимая на ссылку «Начать обсуждение», отображаемую под постом в блоге. В Discourse нет настройки для этого, но я считаю, что это разумное предложение по улучшению функционала. Плагин Discourse для WordPress обладает такой функциональностью, но использует API Discourse для скрытия и отображения тем.
@Canapin Значит, мы хотим, чтобы пост в блоге получил комментарий, И ТОЛЬКО ПОТОМ он был добавлен как тема в Discourse. Пост изначально существует на нашем сайте, верно?
Отличная идея. Другой вариант — не создавать темы, пока пользователь не перейдёт по ссылке, но, думаю, ваше предложение может быть проще. Возможно, @eviltrout мог бы рассмотреть это как возможную задачу для этого релиза на следующей неделе?
Самый простой способ разобраться в этом — попробовать скрыть и затем снова отобразить тему через пользовательский интерфейс Discourse, следуя шагам, описанным в этом руководстве: Как провести реверс-инжиниринг API Discourse.
Чтобы автоматизировать этот процесс через API, вам нужно настроить веб-хук для прослушивания событий постов. Когда вы получите уведомление от веб-хука о том, что в вашей категории встраивания создан первый пост, вы отправите API-запрос для скрытия темы. Когда вы получите уведомление о том, что в теме создан второй пост, вы отправите API-запрос для отображения темы.
Как уже упоминалось выше, более удачным подходом может быть автоматическое скрытие темы в первый раз, когда пользователь перейдет на неё с сайта блога. Таким образом, первый пользователь, оставивший комментарий, не увидит тему помеченной как скрытую. Это потребует несколько более сложной настройки, но это можно реализовать через API, отслеживая события кликов по ссылкам на ваши темы Discourse.
Да, я думаю, нам стоит это сделать, @eviltrout. Может быть, начать с более простого варианта (по умолчанию скрытый, но становится видимым после первого ответа)?
В идеале эта тема будет обновлена, когда функция станет доступной. В таком случае вы получите уведомление об этом, если установите уровень уведомлений для этой темы на «Слежу».