Заставить пользователей выбрать категорию

Я хочу, чтобы пользователи вручную выбирали категорию при создании новой темы.
Я уже проверил следующие темы:

https://meta.discourse.org/t/invite-people-to-choose-category-before-create-a-new-topic/214077
https://meta.discourse.org/t/require-category-selection-before-writing-topic/66236/15

но ни одна из них, похоже, не решает эту задачу.
У меня снята галочка «Разрешить темы без категории».

Проблема в том, что категория уже заполнена по умолчанию? Если да, то вам, возможно, стоит проверить настройку сайта «Категория по умолчанию для создания».

Да, именно в этом была проблема.

Я просто сбросил эту настройку, и теперь всё работает как положено. Спасибо! :raising_hands:

Я заметил, что когда эта настройка установлена как «без категории», пользователь не может кликнуть и начать печатать — вместо этого появляется сообщение с просьбой выбрать категорию. Но иногда люди не сразу читают текст. Не знаете ли вы случайно, можно ли показывать какое-то всплывающее окно при клике на область с сообщением, прежде чем будет выбрана категория?


РЕДАКТИРОВАНИЕ: После того как я перепробовал множество вариантов, предложенных Claude и ChatGPT для этой задачи, я просто удалил свойство «Disabled». Теперь пользователи могут кликать и писать своё сообщение, но если категория не выбрана и они пытаются отправить сообщение, появляется красно-оранжевая ошибка с просьбой выбрать категорию. На мой взгляд, это даже лучшее поведение.

Для тех, кто пытается сделать то же самое, вот JavaScript, который я добавил во вкладку <head> в новом компоненте, который я назвал Unlock Composer:

<script type="text/discourse-plugin" version="0.8">
  const observer = new MutationObserver(() => {
    const textarea = document.querySelector(".d-editor-input[disabled]");
    if (textarea) {
      textarea.removeAttribute("disabled");
      textarea.setAttribute("placeholder", "Выберите категорию перед отправкой");
      textarea.style.cursor = "text";
    }
  });

  observer.observe(document.body, { childList: true, subtree: true });
</script>

Я не разработчик. Это просто то, что предложил ChatGPT, и это работает. Если кто-то видит, как это можно улучшить, пожалуйста, поделитесь.

Не могли бы вы, пожалуйста, показать скриншот этого в действии?

Когда я нажимаю Новая тема, появляется следующее:

Как видите, нет категории по умолчанию. При этом я могу ввести сообщение (в отличие от стандартного поведения, которое блокирует область ввода), даже не выбрав категорию:

Если я попытаюсь отправить, я увижу следующее:

Надеюсь, это поможет.

@alltiagocom отлично, спасибо!

Я думаю, что это обычно поведение по умолчанию. :thinking: Не случилось ли у вас так, что настроен шаблон темы?

Пожалуйста!

Я только что попросил ChatGPT проверить, можно ли немного упростить скрипт, и он удалил первую строку, связанную с API. Я обновил свой пост с финальным скриптом, на случай если вы захотите его использовать.

Нет, никакого шаблона.

Но я считаю, что это не поведение по умолчанию, так как даже в исходном плейсхолдере написано что-то вроде «Выберите категорию перед вводом здесь», а курсор меняется на стрелку с символом :prohibited:. Это не позволяет мне кликнуть и начать ввод, пока я не выберу категорию.

Это именно то, чего следовало ожидать, если у вас настроен шаблон темы для одной из ваших категорий. Если шаблоны не заданы, система должна позволять войти в область редактора до выбора категории. Блокировка происходит при использовании шаблонов тем, чтобы люди случайно не обошли этот шаблон, начав вводить текст в редакторе, а затем выбрав категорию.

Я только что быстро протестировал это на своём сайте: при отсутствии категории по умолчанию или шаблонов тем я могу войти в область редактора без блокировки, пока не выберу категорию.

Странно… Я только что отключил созданный компонент, попробовал снова, и теперь он позволяет мне печатать. Он не заблокирован :confused:

Может быть, это проблема кэша после того, как я установил категорию в «(без категории)» или что-то в этом роде? Кэш на самом сервере, потому что и в Chrome, и в Firefox, с разными учётными записями, я наблюдал одинаковое поведение. Я использую Cloudflare и заметил, что иногда возникают проблемы с моим форумом, которые, похоже, связаны с кэшем Cloudflare. Опять же, я не эксперт, так что я просто предполагаю…

Хм, кажется, я поспешил с выводами…
Через несколько минут поведение снова изменилось. Оно заблокировано. И когда я проверяю композер, я вижу следующее:

Похоже, мне просто стоит остаться на Компоненте.

Если это заставит его работать так, как вы хотите, то :chefs_kiss:

Из любопытства, если у вас установлен плагин «Исследователь данных», не могли бы вы запустить этот запрос, чтобы посмотреть, что он покажет:

SELECT id as category_id, topic_template
from categories

Я как раз тестировал это на другом сайте (который, как оказалось, имеет немецкий язык по умолчанию), и мы заметили, что в псевдо-категорию «Без категории» был добавлен хитрый шаблон, который, похоже, вызвал такое же поведение на этом сайте.

Я только что заметил, что на форуме Obsidian наблюдается то же самое поведение. Тема заблокирована, пока я не выберу категорию, так что, вероятно, это новое поведение?

У меня нет плагина Data Explorer, извините.

Я так не думаю. :thinking: На обоих недавно обновлённых сайтах, которые я тестировал, поведение совпадает с моими ожиданиями (без категории по умолчанию или шаблонов тем — можно писать свободно, не выбирая категорию сначала).

Мы не могли понять, откуда на сайте с немецкой локалью взялся шаблон темы «Без категории». Если бы там незаметно добавился автогенерируемый шаблон по какой-то причине, это нарушило бы задуманную функциональность, и никто бы этого не заметил.

Есть ли он у вас? (И если вы сможете поделиться своей локалью по умолчанию, это тоже было бы полезно)

/c/uncategorized/edit/topic-template

Обновление: В качестве альтернативы исследователю дат вы также можете отфильтровать логи действий сотрудников по «шаблону темы» и посмотреть, есть ли там дополнительная информация.

(Я также добавлю сюда отфильтрованную ссылку, которую Moin поделил ниже)

/admin/logs/staff_action_logs?filters=%7B%22subject%22%3A%22topic_template%22%7D

Это отличный плагин, я настоятельно рекомендую его. :slight_smile:

Я думаю, что в интерфейсе немного сложно выполнить такую фильтрацию, поскольку можно фильтровать только по действиям, а не по субъектам. Для действия «изменить настройки категории» может быть много записей в журналах. Однако вы можете добавить фильтр по субъекту в URL: /admin/logs/staff_action_logs?filters=%7B%22subject%22%3A%22topic_template%22%7D

Себе же во благо установите его, потому что он очень полезен. :slight_smile:

Странно, что форум Obsidian ведёт себя так же, как мой. Кто бы мог подумать…

Тоже пусто. Вообще, я не думаю, что у меня есть какие-либо шаблоны где-либо.

Спасибо, Лилли (и спасибо @JammyDodger), что поделились этим плагином.
Обязательно посмотрим на него.

Кажется, вы должны были увидеть поведение по умолчанию на try.discourse.org, если вам всё ещё интересно. Нет, я ошибся. На Try установлена категория по умолчанию (default category).

Я надеялся найти забытые. :slight_smile: Но если нет автоматически добавленной в «Без категории», то это, похоже, исключает возможную ошибку, что хорошо. :+1:

Есть также журналы сотрудников (используя ссылку, которую поделился Мойн), но вы, кажется, довольны своим обходным решением, так что я перестану выпытывать у вас дополнительную информацию. :slight_smile: