有人在这里使用他们的 Discourse 实例作为整个网站吗?

为了简化我们的技术栈,我在想我们是否不应该分别托管网站和论坛,而是重新配置 Discourse,使其同时作为我们的网站和论坛。

我看到 Pavilion(由 @angus 运营)就是这样使用 Discourse 的。

不过,我们的网站需求要复杂得多!这是我们当前的网站。

我很好奇是否还有其他仅使用 Discourse 的网站可供我探索。或者,您是否有任何关于如何实现这一点的想法?

5 个赞

好吧,你可以使用 发布页面 来发布非帖子类内容。

然后,通过 页眉子菜单插件 添加带有子菜单的顶部导航栏,或者使用 另一个插件 来添加不带子菜单的简单导航栏。

具体选择哪种方式,取决于你的实际需求。

4 个赞

是的!我觉得这些是很好的起点。

我们的一项需求是能够嵌入诸如我们的新闻通讯注册表单和 捐款表单 之类的内容。

4 个赞

我也不太清楚自定义样式在页面发布中究竟有多强大。我在想,是否有现成的示例展示了风格更为丰富的页面,例如包含不同背景的内容块等设计。

2 个赞

归根结底,这个问题取决于三点:

  • “已发布内容”(a)与社区内容(b)的数量对比
  • 访问(a)与(b)的比例
  • 您的预算

只要配置好缓存和 CDN,一台 5 美元的 VPS 运行 WordPress 就能支撑数百万次页面浏览量。而同等规模的 Discourse 实例成本会高得多,远远更高。

如果大部分流量和活动都发生在 Discourse 中,且静态页面没有流量激增的风险,那么将所有内容托管在 Discourse 中可能是合理的选择。但在其他情况下,专业的 CMS 仍然是首选。

11 个赞

嗯,你可能需要检查一下你的 HTTPS 和证书。

4 个赞

15 条帖子已移至新主题:SSL 证书在主 Discourse 网站上无法使用

Discourse 基于 Rails 后端且可扩展,理论上你可以实现任何 Rails 应用能做的事。不过,你是在寻找“万能灵药”吗?

1 个赞

虽然这当然可以实现,并且可能适合您的组织,但我们 Discourse 团队的主网站使用的是不同的软件。

我们的主网站是由 https://jekyllrb.com/ 生成的静态 HTML,而我们的博客则是一个简单的 WordPress 实例。

这实际上取决于您组织的工程架构以及您的需求和优先级。

7 个赞

谢谢,Rafael。

我迫不及待想彻底告别 WordPress。我原本打算采用纯 Discourse 方案,但现在我倾向于用 Jekyll 来处理 www.literatecomputing.com 上现有的静态信息和内容,而将那些能带来收益的部分迁移到 Discourse,并搭配即将推出的 discourse-subscriptions 插件。目前,我正在全力开发一个 Discourse 插件,它将作为我用于安装、升级及其他维护工作的工具的前端界面。

7 个赞

作为抛砖引玉,这里有两个完全由 Discourse 构建的网站(第一个网站使用了 Docuss 插件,现已废弃;第二个网站使用了 DiscPage 插件):

http://www.docuss.org/
https://en.castafiore.org/

7 个赞

感谢您提供这个决策框架!

老实说,我不太确定这句话的具体含义,所以我将把这个问题交给我们的技术团队成员。:smile:

@pfaffman 能否请您多谈谈这一点?您遇到的痛点具体有哪些?我目前仍在考虑各种内容管理系统,WordPress 也在我的备选名单中。

我非常希望能在这方面与您保持联系!

3 个赞

是的,这正是我需要的。谢谢!

5 个赞

公平地说,我在它被称为 php 之前就已经开始学习它了,而且没有跟上它如今作为一门现代语言的发展,而且我的需求非常特定(我需要处理收款,并执行一些操作来创建 Digital Ocean 的 Droplet 实例,并在其上安装 Discourse)。

但最近几次,我接受了 500 到 1000 美元,去做一些 Discourse 或 WordPress 的修改工作,当时我确信这会是一笔快速又轻松的收入,结果却后悔了。最近一次,我花了很多时间,最后还把客户的钱退了回去。当然,如果他们做的事情很简单,可能就不会雇佣我了。我还有另一个客户,他的 WordPress 站点上有成千上万个过时且无法升级的插件。简直是一团糟,而且在某个环节被黑了,里面充斥着一些色情链接。这种情况其实很容易避免。

另一方面,过去一两年里,我一直使用 Gravity Forms 而不是 WooCommerce 来收款,无论是单次付费还是订阅服务(尽管尚未与 Discourse 集成),用得很满意。(但我无法让它在我期望的确切时刻触发 Discourse 的安装!)

如果您做的是“标准”内容,并且坚持使用维护良好的插件,您可能不会后悔(不过我会使用 discourse-subscriptions 来处理 Discourse 的订阅问题)。互联网上四分之一的网站都在使用 WordPress,这背后是有充分理由的。

7 个赞

更新:看来我们将为网站和 Discourse 采用两套独立的系统。关键因素在于,需要更新网站内容的人员大多是非技术人员,因此他们非常受益于使用极其易用的内容管理系统。我们使用 Weebly 让人们能够轻松更新内容;更棒的是,我们付费使用了一个平台,该平台不仅托管我们的捐赠系统,还包含联系人管理系统,并配备了一支专属技术团队。我们只需发送邮件,他们就能完成更复杂的修改,例如网站主题、组织结构、嵌入内容等。他们将负责 Weebly 网站,但不负责 Discourse。

既然已决定采用两个不同的站点,我们需要想办法让两者协调一致。在此特别感谢 @angus,他的公司支持 PianoGroove 社区,其集成效果是我所见过的最出色的(而且我见过很多!)

PianoGroove 网站

PianoGroove 社区站点截图

@angus,我由衷感谢您为客户所做的卓越工作,也感谢您慷慨地将自己开发的插件和主题开源。要让我们的网站和 Discourse 真正为我们所用,我们还有很长的路要走,但一次次地,我发现 Pavilion 所做的工作,正是我们这样一个开源、草根、社区型组织所需要的。

16 个赞

感谢 @debryc :slight_smile:

我想补充一点,维护我们工作的不仅是“我”,而是所有 Pavilion 成员。我们的合作社是一项团队共同努力的成果。

此外,我们刚刚开源了落地页插件。该插件允许创建完全独立的页面,并由 Discourse 实例提供支持,这也是满足本话题中讨论需求的一种途径。该插件将页面前端与 Discourse 客户端分离(即不加载 Discourse 应用),同时仍可通过通用后端(即 Discourse 服务器)实现轻松集成。

我们已开始为部分客户使用该插件,以满足与这里讨论的类似需求。同时,我们也在探索开发易于使用的通用开源页面包,这些页面基于与社区相关的 CMS 的常见用例,并可与该插件配合使用。

以下是我们目前考虑将采用此方案的处理用例列表:

  • 博客(我目前正在开发此功能)。在 Discourse 中撰写内容,然后在完全独立的博客页面中展示,你可以像真正的博客(如 WordPress 或 Ghost)那样为其设置主题。
  • 产品、服务或功能页面(如我们的页面)。展示产品、服务或功能,这些内容可包含来自您的 Discourse 实例的内容或数据(分类、标签、主题、用户等)。
  • “团队”页面(如我们的页面)。利用 Discourse 用户组的成员资格(和用户数据)为您的团队创建专属页面。
  • 活动页面,用于列出并展示来自 Discourse 实例的活动数据,并以风格化的活动落地页形式呈现。这里的“活动数据”可以是 Discourse 日历插件数据、分类、主题、用户(例如 RSVP)和位置(使用我们的位置插件)的组合。

我们很感兴趣了解其他人认为哪些通用用例适合采用这种处理方式。不过需要说明的是,我们已考虑过一些用例,但目前不太可能为其提供此类支持:

  • 商店。虽然可能存在整合商店元素的页面,但在线商店需要大量功能,这些功能始终需要专门的解决方案(如 WooCommerce 或 Shopify)。
  • 知识库。这一需求已有像知识探索器插件这样的成熟解决方案。落地页可以展示知识库的子集,但完全复制知识探索器插件(或仅仅是 Discourse 主题列表)的功能则是适得其反的。

我们也欢迎任何人参与开发此类页面,无论是作为开发项目本身(例如用于提升技能)、为其社区服务,甚至是用于销售。我们计划在中期(4 到 6 个月内)为每个用例发布我们自己的免费开源页面包。

落地页插件以及 Pavilion 自身的页面将始终保持 100% 开源和免费。然而,这是一种可通用的架构,任何具备 HTML 和 CSS 知识的人都可以利用它来开发“页面包”。我很快将为该插件在知识文档中添加一份“开发者指南”。

落地页插件已支持以与 Discourse 主题系统相同的方式在私有仓库中托管页面(实际上,它在底层基于并扩展了 Discourse 主题系统)。这意味着如果您愿意,现在就可以出售落地页包的访问权限。这可能会促使其他开发者构建此类页面包。

这种方法无法解决与论坛相关的所有内容管理需求,但它可以在一定程度上很好地满足部分需求,特别是我们经常在小型和独立社区中看到的那些需求。因为它可以消除对独立实例的需求,更重要的是,消除了通过身份验证协议(即登录时共享用户数据)、Webhooks 或其他数据共享方法在这些实例之间共享数据的需求。

这将有助于降低成本和管理负担,特别是对于那些希望在与论坛并行的环境中管理相对封闭或定向内容,或静态页面的小型社区而言。它永远不会成为 WordPress 或其他 CMS 系统的直接替代品,但我们希望它能显著简化某些用例的实现。

19 个赞

是的!非常感谢!

允许脚本的页面

我加入基于 Discourse 的社区才 2.5 个月。我遇到的需求是某些工具需要包含脚本。

日历示例:有一些日历或事件工具我可以嵌入到页面中。但是,需要在 <head> 中放置脚本,并且需要为页面触发该脚本。

更通用的 SAS:很多时候,iframe 并不是理想选择。例如,我不希望我的成员必须跳转到另一个网站进行注册,但我的注册服务 ConvertBox 需要 <head> 中的脚本和一个 <div>

当我考虑提升社区的 offerings 时,有一点非常明确:除非我能“解决”更轻松地添加基于脚本的嵌入的问题,否则我感觉自己只能局限于 OneBox 支持的内容或使用 iframe。如果 Pages 功能得到增强,能够提供像这样的脚本包含和触发控制,我甚至梦想着可以退役我的 WordPress 网站。

我虽然无法编写代码,但我愿意在财务上支持此类开发,以便社区受益。谢谢!

3 个赞

嵌入功能实际上既可以通过主题在 Discourse 界面中实现(例如在主题列表上方),也可以通过 Landing Pages 插件 实现。对于后者,我使用这个 迷你版恐龙游戏 制作了一个示例。你可以在这里试玩:Pavilion

2021-03-04 18.54.09

这个示例无需编写代码。我所做的只是将这些资源上传到我们的 CDN(将文件夹拖放到 DigitalOcean 的“空间”中),创建一个路径为"dinosaur"的页面,然后复制并粘贴这段 HTML 代码(均通过管理界面完成)。

HTML
<div class="landing page dinosaur">
  <div class="container">
    <h1>恐龙游戏!</h1>
    <canvas id="game" height="200" width="800"></canvas>
    <p class="controls">按空格键开始</p>
    
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/helpers.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/game-object.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/cactus.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/dinosaur.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/background.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/score.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/game.js"></script>
    <script>
    	new Game({
    		el: document.getElementById("game")
    	});
    	window.onkeydown = function(e) {
            return e.keyCode !== 32;
        };
    </script>
  </div>
</div>

Landing Pages 插件实现了 Discourse 的内容安全策略(CSP)和跨域资源共享(CORS)设置,我已通过相关站点设置配置好以处理来自我们 CDN 的脚本。

下周我将为该插件发布一个完整的“如何托管和嵌入资源”知识库主题,以涵盖此类用例。

8 个赞

谢谢,这作为一个起点很有帮助。

我在主题中找不到如何实现这一功能,例如插入一个 <script>,使其在每次话题变更时加载,或位于话题列表上方。我是否需要自定义主题,并将其放在“页眉之后”?

2 个赞