创建链接以使用预填信息启动新主题

:bookmark: This documentation explains how to create a link that starts a new topic in Discourse with pre-filled information.

:person_raising_hand: Required user level: All users

Sometimes you may want to provide users with a link that opens a new topic composer with certain information pre-filled. This can be useful for various use cases including bug report templates, feature requests, or standardized posts.

Constructing the URL

Base URL

To compose a new pre-filled topic with no extra information, you append /new-topic to your site URL, like so:

https://discourse.example.com/new-topic

Clicking on this will open up a blank new topic composer for any logged-in user (if not logged-in, you’ll be prompted to signin/signup before then opening the composer).

Additional Parameters

While a link to open a blank composer can sometimes be useful, the main strength of this feature is the ability to pre-fill the composer with extra information.

To do this, you can add parameters to the base URL:

https://discourse.example.com/new-topic?title=topic%20title&body=topic%20body&category=category/subcategory&tags=email,planned

This will open a composer window pre-filled with topic title, body, category and tags.

Breaking down the link / URL to show the available options, we have:

  • Base URL: https://discourse.example.com/new-topic
  • The ? URL operator to add the different options
  • Topic title: title=topic%20title
  • The &, used each time when including another parameter
  • Body: body=topic%20body
  • The category and subcategory separated by a slash / if you want to include them: category=category/subcategory
  • The tags separated by comma(s) , if you want to include multiple tags: tags=email,planned

Each of the parameters is optional and can be mix and matched depending on your desired end result.

As an alternative to using the category/subcategory name, you can specify a numeric category_id instead, like:

https://meta.discourse.org/new-topic?title=topic%20title&category_id=3

Example

You can try this here on Meta:

https://meta.discourse.org/new-topic?title=topic%20title&body=topic%20body&category=support/wordpress&tags=wordpress

https://meta.discourse.org/new-topic?title=topic%20title&body=topic%20body&category=support/wordpress&tags=wordpress

:exclamation: Though please don’t actually create the topic :slight_smile: For a more hands-on explore of the feature use our demo site, try.discourse.org

Using a pre-filled URL with Featured Links

This feature also supports Featured Links, provided that the body parameter is not also included.

:information_source: The URL must be URL encoded for the link to work.

For example, to create a topic with the following URL https://www.xkcd.com/556, the link will be:

https://meta.discourse.org/new-topic?title=https%3A%2F%2Fwww.xkcd.com%2F556

Best Practices

  • w3Schools HTML URL Encoding Reference is a good resource to find what text characters are encoded as in the URL. If you have a lot of text to add, there is also a text-to-URL converter in the ‘Try It Yourself’ section.
  • Always URL encode the parameters to avoid issues with special characters.
  • If you’re unsure about the category ID, you can check it by looking at the number in the category URL. (eg. https://meta.discourse.org/c/documentation/using-discourse/126)
  • Test the pre-filled links to ensure they work as expected.

:information_source: It is not currently possibly to have a pre-filled link that opens a composer to reply to a specific topic.

Additional Resources

89 个赞
Start creating a new topic via link?
Link that pre-populates the composer?
Fill in post for user?
What is the best way to integrate member applications?
Open Composer with Prefilled information
Unlisted categories
URL to set up new topic and category, tags
Problem in sso redirection for compose a new pre-filled topic via URL
Pre-filled topics don't recognize subcategories anymore
Topic-specific reply template
Rename @discobot's start new user command
Bookmarklet or chrome extension for posting links to a Discourse
Add one button for topic create with pre-filled content without composer or API?
How Coinbase Uses Discourse to Educate Customers and Improve SEO
Link to New Topic?
Link to create a new topic with parsed values in GET-method data?
[PAID] extra input fields for new topic
How to "replace" +New Topic with a custom button that brings up the composer
Discourse Templates
Create new topic via URL and set tag or category
Wording for private/secure categories
Topic-specific reply template
Topic-specific reply template
How to add a "button" which composes a pre-filled topic
Start a topic by pasting a link (like Reddit)
Link to start a topic with a pre-filled attachment file
How to create a post clicking a link?
Is there any link to open composer (for hyperlink)?
"push" sso users to discourse?
Post commits via webhook inside a topic as reply
Was this Article helpful? Yes or No
Gitter: Post notifications to chat, post transcripts to forum
How to make all users who sign up or accept in invite go to a specifed category(with post composer open)
Category-specific "new topic" email address/url in notification email?
Open new topic composer in a separate window
Onboarding: Discobot, automated messages, other options?
Deep link to new topic or account creation
Alerts that react to the user
Feedback form / reporting bugs
How to have a reply link with pre-filled information?
How do I create a link which opens Create Topic?
Create a link that will open the editor with a specific category and a specific tag
Any Direct URL To New Topic Page?
Creating pre-filled personal message links
URL for "Sign Up" or "Create Topic"?
Link to "Create new topic" and passing tag and category with query var?
Opening a reply window via URL
How do I create a link which opens Create Topic?
Opening a reply window via URL
Prefilled composer link generator
[Solved] In plugin: opening the composer without changing the route
URL to start new post
New Topic Create URL is not working for Subcategory
Create new topic in category with specific tag via URL
Is there a way to make an input form for structured data?
Placeholder Forms
Direct link to composing a comment?
Topic-specific reply template
Creating pre-filled personal message links
Oneboxing not working when starting a topic with pre-filled information
Using topic templates for categories
Impossible to copy heading links
Topic Templates
Have url for creating topic with specific title
Oneboxing not working when starting a topic with pre-filled information
Is there a way to link directly to the editing screen?
Directly linking to new-topic not working when default list filter = no sub categories
Chrome/Firefox extension "Share to discourse"
How to add%{post_url} in customize URL
How to auto set topic title?
How can I create a new topic in Discourse via a link or direct the person to the topic if it exists

这里有很多繁重且对普通人来说难以理解的技术工作;我敢打赌,我们可以创建一个“助手”网页,让人们轻松生成这些链接。

这可能是一个不错的项目,可以供某人实现:

import urllib

site = 'meta.discourse.org'
title = '''My special checklist'''
category = 'todo'
tags = ['tag1', 'tag2']

template = '''\
# Important!

Do these things:

[ ] thing one
[ ] thing two
'''

query = urllib.parse.urlencode(dict(
    title =    title,
    category = category,
    tags =     ','.join(tags),
    body =     template,
))
print(f'https://{site}/new-topic?{query}')

打印 此链接

4 个赞

possible* - 我以为文档是维基 :thinking:

2 个赞

这已经改变了

3 个赞

谢谢这个主意!它启发我创建了 Prefilled composer link generator

5 个赞

太棒了!这是一个很棒的实现想法。干得好!

4 个赞

一个问题。

我实现了一个主题组件,它有一个按钮,点击该按钮可以打开预先填充了内容和标题的新主题表单。如下所示:

https://www.mydomain.com/new-topic?title=${title}&body=${body}

它运行良好,打开了新主题表单,但如果我不想继续,点击“丢弃”
这不会丢弃主题,而是将其保存为草稿……
因为我点击了“丢弃”,我不想让它成为草稿,以后还得清理草稿

想知道使用这个 new-topic URL 是否是预期的行为?
有没有办法在选择丢弃时不要将其保存为草稿。

谢谢。

如何重现:

  1. 在主题组件中,添加一个按钮,其引用设置为如下所示的新主题 URL
const topicBody = `.....`;
const title = "....";

// 新主题的 URL
const createTopicUrl = `https://www.mydomain.com/new-topic?title=${title}&body=${topicBody}`;

const createTopicLink = `<span><a href="${createTopicUrl}" rel="noopener noreferrer">new topic</a></span>`;

const meta = `<div>${publisher}${pub_date} ${createTopicLink}</div>`;

const description = `<p>${description}</p>`;

// 将“新主题”按钮添加到 UI
return `<li class="news-item"><hr><div class="news-title"><a href="${url}" target="_blank">${title}</a></div>${meta}${description}</li>`;
  1. 点击“新主题”按钮,看到新主题表单已打开并预先填充了标题和内容。
  2. 点击丢弃,确认
  3. 检查“我的帖子”,它确实有一个关于这个被丢弃的新主题的新草稿..

我在这里的 Meta 上似乎无法重现此问题。这在安全模式下会发生吗?您的实例是什么版本?谢谢。

我的实例版本是 2026.1.0

在使用系统内置体验新建主题时,如果选择放弃,它不会将其保存为草稿。

我的情况是,我将新主题的 URL 挂载到了一个在主题组件中添加的按钮上。
不确定为什么这与内置体验不同……

1 个赞

嘿,Nate

copilot 在下面解释了这一点,
如果这是真的,想知道是否可以在 URL 中添加一个参数来阻止这种情况,那将很棒
比如 &auto_save=false
感谢您的帮助。

是的,这在 Discourse 中是预期的。通过 new-topic URL(带有预填充的标题/正文)打开撰写器会在撰写器初始化时立即创建一个草稿。即使您点击“丢弃”并确认,Discourse 仍可能会为该路由保留一个草稿条目,以便以后可以恢复内容。该行为来自核心撰写器/草稿自动保存逻辑,而不是您的 URL 格式。

如果您想避免草稿,则需要一种自定义方法(例如,打开一个模态框、复制到剪贴板或使用草稿键覆盖调用撰写器 API),但纯粹的 new-topic URL 总是会启用草稿自动保存。

我不确定这是否准确 :person_shrugging:。我在 Meta 上的安全模式下无法重现此问题。我猜你使用的是论坛的稳定版/ESR 版本?

嘿,Nate,是的,我对 Gemini 的那个答案也不确定。

有趣的是,我今天再也无法重现它了。我的主题组件在那部分没有任何变化。

谢谢你的帮助,如果发现更多情况会再发帖……

1 个赞