着陆页博客 ✈️

已运行,但不再维护(2022 年 7 月)

您现在可以使用 Landing Pages 插件 在 Discourse 上运行博客 :tada:。只需将某个分类设置为您的博客,该分类中每个话题的第一篇帖子就会拥有独立的博客页面,并显示在博客文章列表页上。

Screen Shot 2021-05-13 at 5.04.18 PM

本项目是 @meghna 与我共同合作的成果。所有精美的设计工作均由她完成。如果您喜欢这个博客的设计,请务必查看她的 Discourse 主题。如果您发现功能方面有任何 bug,那都是我的责任 :slight_smile:

获取代码

GitHub-Mark-64px Landing Pages 插件
GitHub-Mark-64px 博客落地页
GitHub-Mark-64px 博客落地主题

查看实际效果

try.thepavilion.io/blog

请注意,本文中博客内容及截图中显示的所有内容均来自 The Conversation,并依据该网站使用的知识共享许可协议使用。所有内容归原作者所有,仅用于演示目的。

如何设置

请按顺序执行以下步骤:

  1. 安装 Landing Pages 插件如何在 Discourse 中安装插件)。
  2. 安装 博客落地主题如何在 Discourse 中安装主题)。
  3. 博客落地页 设置为您要使用的 落地页仓库
  4. 在落地页管理界面中,将“博客”页面的分类更改为您希望用于运行博客的任意分类。

完成!该分类中每个话题的第一篇帖子现在都会成为您博客上的文章 :slight_smile:

限制发帖权限给贡献者

您可能希望限制该分类的发帖权限,仅允许一组博客贡献者发帖。如果您不确定如何操作,这里有一份快速指南:

  1. 创建一个用户组,例如“贡献者”,方法是进入 /groups 并点击“新建群组”。
  2. 向该组添加用户(点击右上角的“添加成员”)。
  3. 在博客分类的“安全”设置中,从“所有人”移除“创建”权限,并添加您的贡献者组。

现在只有您的贡献者可以在您的博客上发帖,但所有人都可以评论文章。

与其他博客解决方案相比有何不同?

目前已有许多优秀的在 Discourse 内部或 alongside 运行博客的解决方案,包括:

本方案略有不同,因为它是一整套独立于 Discourse 客户端应用之外的页面,但仍使用同一台服务器。这为您带来了相较于运行独立博客(例如在 WordPress 上)或直接使用 Discourse 分类(例如通过主题组件)的若干优势,包括:

  • 您可以在 Discourse 中创建内容并让用户回复,同时拥有一个专门的博客环境用于阅读和分享。您的博客读者会感觉像是在阅读博客,而非论坛帖子。
  • 您拥有单一的用户账户系统(即 Discourse 的账户系统)。
  • 您可以使用 Discourse 群组来限制对博客的访问。
  • 您可以让 Discourse 帖子自动作为评论显示在您的博客上,无需额外设置。
  • 您开箱即可获得美观的响应式博客主题。
  • 您只需设置并支付一台服务器的费用。
  • 博客无需加载整个论坛即可运行,因此加载速度更快。
  • 您可以轻松地将博客页面(及主题)纳入版本控制。
  • 您会收到格式精美的“新博客文章”通知邮件(见下文)。
  • 您可以使用 Landing Pages 插件轻松地将博客与其他所需的落地页一起管理。

然而,尽管博客落地页具有明显优势,但它们并不一定是适合所有人的最佳社区博客解决方案。您应该测试不同的方案,看看哪一种最适合您。

“订阅”博客意味着什么?

如果您已登录并点击“订阅”按钮,将会看到一个弹窗(如果您未登录,则会被重定向到 Discourse 登录页面)。

如果您勾选了“订阅 [站点名称] 的帖子”复选框并提交表单,您将被自动设置为对该博客分类“关注首帖”。这意味着每当该分类有新文章发布时,您都会收到电子邮件通知,就像您订阅了一个博客一样!

您也可以通过常规方式(在 Discourse 中)将博客分类的通知设置为“关注首帖”,效果相同。如果您“关注”该分类(即每篇帖子包括回复都会收到邮件),这也算作已订阅。

博客分类的电子邮件通知有些特殊。首先,除非是您自己发布的帖子,否则只要您已订阅,即使最近访问过站点,您也总会收到邮件通知。其次,这些通知被设计成类似博客文章的邮件样式。

我们计划在未来允许站点管理员在落地页管理界面中编辑博客文章邮件的 HTML。请注意,如果您“关注”博客分类,只有每个话题首帖的邮件通知会有所不同。回复的通知将显示为普通的 Discourse 通知。

超越博客

您可以使用上述功能为任何内容创建一组落地页,就像 WordPress 是一个可用于展示其他(非博客)类型内容的博客引擎一样。您可以使用一个分类来管理一组产品、地点或人物,只需在 Discourse 中发布一篇帖子,即可自动获得该内容的落地页和讨论话题。

任何略懂 Ruby on Rails 的开发者都可以利用此系统实现上述任何额外用例。您无需了解 Discourse 的工作原理。由于这些博客页面是落地页插件的一部分,您还将获得该插件中所有现有模板的访问权限,包括联系表单、页眉、页脚、话题列表和用户资料。您可以在 插件文档 中了解更多关于这些模板及其他模板的信息。

41 个赞

看起来很棒,做得好!博客落地页主题是否为必需项?如果是的话,能否将其作为一个组件提供?(这样,那些已经使用其他主题或自定义主题的用户就可以继续保留他们现有的主题。)

2 个赞

博客落地页及其所依赖的“落地页插件”中的功能,均设计为可与任何主题配合使用 :slight_smile: 您可以按个人喜好进行自定义。

它无需在您的 Discourse 站点上处于激活状态即可工作,只需安装并在“落地页”管理界面的相应页面中进行选择即可。以下是 try.thepavilion.io 上的主题设置示例(您可以在原始帖子中查看页面设置)

3 个赞

太棒了!很期待尝试这个功能。谢谢分享 :slight_smile:

2 个赞

:exploding_head:

这太棒了,让我重新思考了整个方法。谢谢!:laughing:

2 个赞

太棒了!

关于自定义,我应该 Fork 这个仓库来输入我网站的信息吗?还是有更好的方法?

2 个赞

感谢 @sethm,是的,Blog Landing ThemeBlog Landing Pages 旨在作为模板,因此您可以:

  • 按照上述说明直接将其导入您的实例;
  • 复刻它们;或
  • 下载它们并进行修改,就像处理 WordPress、Ghost 等平台的模板一样。
3 个赞

是否有办法让部分 Discourse 内容公开显示(如本博客内容),而不是要求注册/登录?谢谢。

–Peter

1 个赞

嘿 Peter,是的,默认情况下 Discourse 中的内容是公开可见的。如果不是,则表示您启用了“需要登录”站点设置。然后,您可以使用特定于类别的权限(在类别设置中)来控制特定类别的可见性。您可以在上方看到类别特定访问设置的屏幕截图。

1 个赞

但是,我看不到特定于类别的访问设置的屏幕截图?

1 个赞

有什么帮助吗?
也许只有当我删除“需要登录”时,特定于类别的设置才会出现?
但除非我将类别设置为“公开”或“需要登录”,否则我不想删除它……
谢谢。

——彼得

1 个赞

您应该可以在类别页面的管理扳手(admin wrench)的“安全”(Security)选项卡中查看类别权限:

希望这能帮到您。:slightly_smiling_face:

2 个赞

啊!谢谢。
那么,将所有类别和当前用户设置为信任级别 2,并将我想要设为公开的新类别设置为信任级别 0,并更改“需要登录”设置,就能奏效吗?或者这个逻辑是错的?

——Peter

1 个赞

如果您希望博客类别对匿名用户和账户持有者都可见,那么您希望“所有人”组至少具有“查看”权限。

然后将其他类别设置为至少 trust_level_0,这样用户就需要拥有账户才能查看和互动这些类别中的主题。

1 个赞

谢谢,这奏效了。感谢您的帮助。

2 个赞

我需要一些帮助来理解这个插件。一方面,你说你可以

将一个类别设置为你的博客,该类别中每个主题的第一篇文章将拥有自己的博客页面,并出现在博客文章列表页面上。

另一方面

  1. 将博客登陆页面设置为你的登陆页面存储库。

我很困惑。我可以在没有 git 存储库和任何 *html.erb 文件的情况下,用我的 Discourse 帖子运行一个博客吗?

1 个赞

博客的内容是从 discourse 帖子中提取的。博客的布局由 html 文件处理,这些文件可能位于 Blog Landing Pages 存储库中。

此插件不像 Hugo 那样在标记语言中创建博客帖子。虽然将其与 Hugo 集成会很酷,但我们可以稍后尝试(cc @jumagura

3 个赞

我运行 Discourse 论坛已经几个月了,所以对它还比较陌生。我之前安装过一个插件,但今晚当我尝试安装 Landing Pages Plugin 时,在重建应用程序时遇到了错误,并且它无法启动。也许是兼容性或版本问题,但我不知道从哪里开始。有人能给我指点一下吗?我查看了日志,但看不出问题所在。

这是运行重建后结果的最后一部分:

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 364 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
fb680c9c3b46dcd068abe877ed4187c730351c10139cc3eda2a8b7202822bf07
saul@discourseonubuntu2004-s-1vcpu-2gb-intel-lon1-01:/var/discourse$
saul@discourseonubuntu2004-s-1vcpu-2gb-intel-lon1-01:/var/discourse$

感谢任何帮助。

1 个赞

有人能帮忙检查一下这个插件吗?我遇到了和上面那位用户一样的问题。在尝试构建它时,我收到了一些错误,显然自 2.9.0 beta 4 及更高版本以来它就坏了。

我可以提供一些日志,但如果创建者检查一个全新的 discourse 安装然后尝试构建它会更好,因为我在现有的 discourse 安装和全新的安装上都测试过,它总是构建失败。

我严格按照初始帖子中提供的步骤进行操作。

  1. 安装 Landing Pages Plugin (如何在 Discourse 中安装插件)
  2. 安装 Blog Landing Theme , (如何在 Discourse 中安装主题)
  3. Blog Landing Pages 设置为您的 landing pages repository
  4. 在 Landing Pages Administration UI 中,将“Blog”页面的类别更改为您要用于运行博客的任何类别。
1 个赞

我将在下周更新此插件以兼容最新的 Discourse

4 个赞