Я использую для этого простой компонент темы в своём экземпляре. Ниже приведена адаптация моего кода — он также поддерживает #upload (открытие окна загрузки при создании нового ответа на рабочем столе) и #edit (для авторов вики-статей), в дополнение к #reply.
Его ещё нужно доработать, например, избежать использования setTimeout и правильно управлять draftSequence (я не думаю, что topic.draft_sequence является правильным), и я не знаю, что было бы лучшей практикой в данном случае. Тем не менее, у меня это работает нормально.
Переход к любой теме, например /t/[slug]/[id]#reply, откроет композитор с новым пустым ответом.
Если вам нужен заранее заполненный текст, это можно реализовать, установив атрибут reply в объекте, передаваемом в composer.open. Кроме того, если для этой темы уже есть черновик, система спросит, хотите ли вы сохранить или отменить его перед созданием нового ответа — draftSequence должен быть корректным, если желаемое поведение — продолжение работы с этим черновиком.
<script type="text/discourse-plugin" version="0.4">
if (/.*#reply$/g.test(document.URL)) {
const { REPLY } = require('discourse/models/composer').default;
const composer = Discourse.__container__.lookup('controller:composer');
setTimeout(function() {
const topic = Discourse.__container__.lookup("controller:topic").get("model");
if (topic) {
composer.open({
action: REPLY,
draftKey: topic.draft_key,
draftSequence: topic.draft_sequence,
topic,
});
}
}, 0)
}
</script>
Надеюсь, это поможет.