Я только что объединил функцию, которая автоматически создаёт новую связанную тему, когда тема закрывается автоматически на основе настройки сайта «Количество постов для автоматического закрытия тем».
Эта функция особенно полезна для автоматического разделения и управления мега-темами.
Как это работает
Предположим, что настройка «Количество постов для автоматического закрытия тем» установлена на 10000 постов, и тема (с заголовком «Представьтесь!») только что достигла этого лимита.
Теперь мы закроем эту тему и создадим новую связанную тему для продолжения обсуждения. Первый пост новой темы будет содержать ссылки на все предыдущие обсуждения (темы).
Я рекомендую заменить формат [заголовок](ссылка) просто на ссылка, полагаясь на существующий функционал Discourse, который отображает заголовок темы по ссылке. Если я не ошибаюсь, это даст бонус в виде автоматического обновления отображаемого заголовка темы в случае её переименования, что, на мой взгляд, будет приятным штрихом.
Да, это хорошая идея, @techAPJ, нам, наверное, стоит так сделать.
Кроме того, можем ли мы сделать так, чтобы было одно сообщение вместо двух? Почему бы не вписать часть «продолжить обсуждение» в сообщение о закрытии? Например:
Эта тема была автоматически закрыта после достижения максимального лимита в 10000 ответов. Продолжите обсуждение здесь: {link}
Это не будет работать так же хорошо, когда вы продолжаете обсуждение из темы с ограниченным доступом в другую категорию без точно таких же ограничений доступа.
Это вероятный вариант использования? Похоже, что обычно продолжающаяся тема остается в той же категории, что и исходная. Если такая ситуация возникает, вы говорите, что это будет работать хуже, но каково конкретно будет поведение?
Даже без проблемы с ссылками я бы ожидал, что продолжающаяся тема унаследует точно такие же ограничения доступа. Если этого не произойдет, я бы посчитал это ошибкой.
Привет, очень крутая функция, но есть две проблемы:
Как изменить текст «Часть» (1, 2 и так далее)? На англоязычных форумах, наверное, всё в порядке, но нам хотелось бы иметь возможность это изменить.
Категория новой темы. У нас только что появилась первая автоматически связанная тема, и она оказалась в категории «без категории». Мы хотим, чтобы новая тема наследовала категорию предыдущей темы, которая была автоматически закрыта.
@elijah, похоже, вы хотите, чтобы статус уведомлений по теме (наблюдение, отслеживание, отключение звука и т. д.) для каждого пользователя в старой теме был скопирован в новую, верно?
Я понимаю логику, но меня беспокоит, что это может быть слишком навязчивым для некоторых пользователей. Длинные темы могут затрагивать сотни или даже тысячи людей. Есть ли у кого-то ещё мысли по этому поводу, плюсы и минусы?
Да, позвольте мне повторить мои предложения здесь для контекста.
По мега-темам я предлагал один из двух способов сделать разделение более плавным для менее регулярных пользователей.
Метод «Копирование списка наблюдения»: при разделении темы копировать статусы «отключено / отслеживание / наблюдение» на новую тему. (А если в последней теме статус был только скопирован, а не установлен изначально: снять статус отслеживания для теперь закрытой темы.) Обоснование: если пользователь давно не заходил читать тему, но в целом заинтересован в ней, помочь ему догнать, не подсвечивая непрочитанные сообщения в старой теме, а только в новой.
Метод «Разделение сверху»: при разделении темы упростить перемещение сообщений со 2-го по N-е после первого сообщения в новую тему (созданную закрытой) и заменить эти перемещённые сообщения ссылкой на тему. Обоснование: возня с настройками наблюдения — это запутанно. Это позволяет архивировать старый контент, не нарушая внешние ссылки (закладки, RSS, встроенные в приложение и т. д.) или внутренние настройки наблюдения.
Мне больше нравится метод разделения сверху, но оба кажутся способами помочь пользователям, которые заинтересованы в очень длинных (или долгосрочных, но разделённых) темах.
Я использую WP и Discourse для аудиообразования и группового обсуждения, и думал, насколько это было бы полезно: если плагин WP создаёт новую тему в Discourse, событие могло бы запускать создание связанной темы как темы для обсуждения по этой основной теме. Так я мог бы оставить оригинальную тему в режиме «только для чтения», чтобы люди не видели обсуждений, пока не прослушают аудио, а связанная тема стала бы местом для размышлений.
Похоже на это:
Правильно ли я понимаю, что для реализации этого в новом плагине достаточно немного доработать код здесь?
if SiteSetting.auto_close_topics_create_linked_topic?
# поставить в очередь задачу для создания связанной темы
Jobs.enqueue_in(5.seconds, :create_linked_topic, post_id: @post.id)
end
Также мне интересно, достаточно ли существует сценариев использования для автоматического создания связанной темы, чтобы это имело смысл как часть Discourse Automation?