ProCourse Static Pages

I’ve been doing freelance Discourse customization as my primary gig for almost a year at this point. And one of the most common questions I get is about static pages. “Can I just create a static sales page?” “Where’s a good place to put a FAQ without a discussion around it?”

You can likely argue the validity of these questions in most scenarios. The main response being “just close the topic.” But that doesn’t cut it for most. Thus, I decided to create this plugin to make it possible.

It’s pretty simple. You get a backend under Admin > Plugins to create, edit, and delete these pages as you like. It uses the same topic composer we’re used to. Once you have the page built, you can Enable it and share the link to the page wherever you like.

For a demo: LINK IS DEAD.

I should also note that styling is made easier with a class static-page in the wrapping div for the whole page. That way you can do whatever you want to the body of the page from a CSS standpoint in a theme.

46 个赞

感谢这个很棒的插件!

一个小小的 SEO 请求:如果能提供额外的字段来填写页面标题和描述,以便填充标题和元描述,那就太好了。

3 个赞

同意。此外,如果能上传图片就太好了。

1 个赞

抱歉,我不太明白您是如何将其放在私人论坛上的。
这正是我需要的。

我想我遇到了同样的问题——这很棒,但我需要让页面匿名可见,因为我的网站是私有的,同时希望一些静态页面能向公众开放。

@joebuhlig - 这个话题在这个讨论串里已经被问过几次了。你对此有什么看法吗?

3 个赞

安装后出现了这个情况。

另外,在我卸载它之前,我的 /admin/plugins 列表是空的。所以……请帮忙!:content:

2 个赞

+·1
你说出了我想说的话 :joy:

我已确定该错误源于使用了已弃用的 Discourse.Model(据我所知,在当前版本的 Discourse 中它已被完全移除,因此出现了新错误)。

我已修复该错误并提交了拉取请求:

看起来它已经被合并了……太棒了!你现在应该可以重新安装该插件了。

3 个赞

我认为 Joe 最近并没有在维护他的插件。需要其他人来提交一个 PR。

不过,我们目前正在核心功能中开发一个静态页面功能。它仍处于早期阶段,但你可以通过在站点设置中启用“启用页面发布”设置来尝试使用它。你可以通过打开话题的操作菜单(选择 … 按钮,然后选择扳手按钮)来创建已发布的页面。

13 个赞

实际上它确实有效!谢谢 :smiley:

2 个赞

:heart:

哦!终于!这太棒了。这或许足以让许多人不再使用 WordPress。哦,是的。太棒了。

:heart:

10 个赞

这太棒了——你有任何关于如何访问它们进行样式设置的提示吗?

我想,既然论坛还在开发中,现在花太多精力在设计上可能还为时过早,但目前所有内容都在这里:

4 个赞

谢谢,Steven。稍微测试了一下,发现无法在需要登录的论坛上让匿名用户看到这些内容。真可惜——这正是我真正想实现的功能。不过即便如此,这功能还是很酷。

看来,要让非登录用户看到更多静态内容,只有以下两种途径:

  1. 保持论坛需要登录,并使用现有工具:
    • /admin/customize/site_texts/login_required.welcome_message
    • /tos
    • /privacy
      或者
  2. 将论坛设置为无需登录(即公开):
    • 并严格控制每个分类和组的可见性
    • 获取完整的 /tos/privacy/about/faq 套件
    • 通过“启用页面发布”功能创建任意数量的静态页面

请问大家是否知道其他方法(不包括托管在其他域名或子域名上的页面)来实现这一目标?

4 个赞

完整说明请访问 Page Publishing

1 个赞

没错。我知道这个插件主要用于创建静态页面。不过,假设你要在页面上放一个计算器应用,该应用需要用户输入。页面代码仍然是静态的,但会根据用户输入更新结果。使用这个插件能否实现?还是说最好直接做一个带 js 的外部 html/css 页面?

1 个赞

我想在静态页面上使用第三方小部件。相关的 JavaScript 代码应插入到 </body> 之前。请问是否有一种方法可以仅针对该特定静态页面实现这一点?感谢您的帮助!

分享一下我如何实现为静态页面运行脚本:

<script type="text/discourse-plugin" version="0.8">
    const { setDefaultHomepage } = require('discourse/lib/utilities');
    const user = api.getCurrentUser();
    if(!user) {
        setDefaultHomepage('/page/welcome/1/'); // <--- 设置主页 URL
    }
    api.onPageChange((url, title) => {
        if(url.indexOf("/page/welcome") === 0) {
            // 对此静态页面执行操作
        }
    });
</script>

需要说明的是:将页面设为主页对于运行脚本来说完全是可选的,我只是想展示这也是可行的 :+1:

4 个赞

谢谢!
你知道如何在静态页面中使用外部脚本(非同一域名)吗?
总是出现以下错误:
内容安全策略:页面设置阻止了内联资源的加载(“script-src”)。来源:(function injectedScript() {...

一般来说,嵌入例如网店而不使用 iframe 的最佳方法是什么?
代码示例:

 <div id="my-store-<id>"></div> <div> <script data-cfasync="false" type="text/javascript" src="https://app.ecwid.com/script.js?<id>&data_platform=code&data_date=2020-12-20" charset="utf-8"></script><script type="text/javascript"> xProductBrowser("categoriesPerRow=3","views=grid(20,3) list(60) table(60)","categoryView=grid","searchView=list","id=my-store-<id>"); </script> </div>
1 个赞

我想再次提出这个请求。这个插件很棒,但每当分享此类页面时,它只会显示默认元数据。如果您能指定标题、描述和自定义图片,那就太好了。该插件是否仍在积极开发中?或者这个问题更适合发布到市场分类?谢谢!