大家好
我刚读了这篇帖子 How to display full name in comments embeds
我运行了这些命令。
cd /var/discourse
./launcher enter app
检测到 x86_64 架构。
root@discourse-app:/var/www/discourse# cd app/views/embed/
root@discourse-app:/var/www/discourse/app/views/embed# nano comments.html.erb
Nano 未安装,所以我安装了它并编辑了 comments.html.erb,替换了所引用帖子中提到的行。
然后我退出了启动器并运行了
./launcher rebuild app
重建后没有任何区别,我仍然在嵌入式内容中看到用户名而不是全名。
我哪里做错了?
谢谢
Canapin
(Coin-coin le Canapin)
2023 年2 月 16 日 10:59
2
欢迎您,Mark!
重新构建应用程序会重新下载 Discourse,并会覆盖您在容器内所做的任何更改。
如果您想对 Discourse 进行修改,以这种方式编辑这些文件不是正确的方法。
自定义 Discourse 的功能通常通过主题组件实现:
Discourse 主题(Themes)和主题组件(Theme Components)可用于自定义 Discourse 前端的观感和功能。本开发者指南部分旨在提供您所需的所有参考资料,以便开发简单的单站点主题,直至复杂的开源主题组件。
本介绍旨在提供主题开发所有工具和 API 的概览。如果您更喜欢主题开发的循序渐进教程,请直接跳转至:
主题与主题组件
Discourse 主题 可用于使用 CSS 和 JavaScript 自定义前端用户体验。每个主题都有自己的 Git 仓库,社区管理员通常可以通过 Discourse 管理面板安装和管理它们,即使在共享主机平台上也是如此。
主题组件 是旨在与其他主题组件一起作为整体主题一部分的主题。从开发角度来看,主题组件和主题几乎是相同的。在本指南中,“主题”和“主题组件”一词可互换使用。
先决条件
首先,请确保您了解 如何在 Discourse 中使用现有主题和主题组件 。使用现成的(ready-made)主题是定制社区最快、最安全的方法。如果您需要更多功能,那么就该考虑编写自己的主题了。
作为 Discourse 整体架构 的一部分,…
或插件:
在 Discourse 中构建插件其实非常简单,只要你了解一些 quirks(怪癖/特性)。本帖的目标是创建一个骨架插件,并向你介绍基础知识。
你的开发环境
请确保你的电脑上正在运行 Discourse 的开发环境。建议你使用 相应的安装指南 ,完成后请回到这里。
plugin.rb
使用 GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins · GitHub 在你的 plugins 目录中创建一个完整的 Discourse 插件骨架
骨架现在已捆绑在 Discourse 核心中,运行 rake plugin:create[plugin-name] 将使用骨架创建一个插件
当 Discourse 启动时,它会在 plugins 目录中查找包含 plugin.rb 文件的子目录。plugin.rb 文件有两个用途:它是你插件的清单,包含关于你插件的必要信息,包括:名称、联系信息和描述。第二个用途是初始化运行插件所需的任何 Ruby 代码。
在我们…
如果您具备一些编码知识,我建议您查看这些链接。
这个链接可能特别有趣:
乍一看,它似乎正是您想要的。它只是针对同一个父文件夹中的另一个文件。
@Canapin 感谢您的建议。
我创建了这个仓库 https://github.com/OptDev/optuma-discourse-custom-embed
但进展不大。
我运行了这个命令,它构建时没有报错
./launcher enter app
但我似乎没有看到我期望在嵌入中看到的更改。我添加了几个自定义的 CSS 类名,并将 <%= post.user.username %> 改为了 <%= post.user.name %>。如果能给我一些关于如何让它工作的进一步指导,我将不胜感激。我无法想象从另一个插件覆盖一个插件的模板文件会太复杂。
我能够做的是进入应用程序并手动将我的插件版本的模板复制到 /var/www/discourse/app/views/embed/,然后我重新启动应用程序,就能看到我想要的结果。
我只需要在插件加载时自动完成这个过程,而这正是我卡住的地方。
为什么这没有用我的插件中的文件覆盖 /app/views/embed/comments.html.erb 文件?
after_initialize do
::EmbedController.prepend_view_path File.expand_path("../embed", __FILE__)
end
好的,我之前是对的,只是路径有问题。
现在我只需要弄清楚如何从私有的 git 仓库拉取。
@merefield 这在 app.yml 文件中看起来会是怎样的?
没关系,我在这里找到了。Install plugins on a self-hosted site
有一点需要注意,文档中说要使用“token”…
git clone https://<token>@github.com/owner/repo.git
我发现我需要使用你的 github 用户名和 token
git clone https://<github-username>:<token>@github.com/owner/repo.git
Mark_Wass
(Mark Wass)
2023 年2 月 21 日 11:01
10
@Canapin 是的!全部搞定了。这是最终的 plugin.rb 文件。原来只是我放置自定义文件路径时出了问题。
我最终把它放在了一个文件夹 /custom_views/embed/comments.html.erb 中。
# frozen_string_literal: true
# name: optuma_discourse_custom_embed
# about: A simple plugin to used to customise the template in the forum embeds
# version: 1.0.0
# authors: Optuma Pty Ltd
# url: https://github.com/OptDev/optuma-discourse-custom-embed
# required_version: 2.7.0
after_initialize do
::EmbedController.prepend_view_path File.expand_path("../custom_views", __FILE__)
end