# 限制远程主题的编辑

**URL:** <https://meta.discourse.org/t/restrict-editing-of-remote-themes/170051>\
**Category:** Announcements\
**Created:** [2020年十一月13日 16:06 UTC](https://meta.discourse.org/t/restrict-editing-of-remote-themes/170051 "2020-11-13T16:06:16Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![justin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/justin/32/157614_2.png) [@justin](https://meta.discourse.org/u/justin)\
**Post date:** [2020年十一月13日 16:06 UTC](https://meta.discourse.org/t/restrict-editing-of-remote-themes/170051/1 "2020-11-13T16:06:16Z")

</div>

长期以来，最佳实践一直是避免在 Discourse 本地编辑从远程 Git 仓库安装的主题。任何对主题代码或上传文件的修改在从远程仓库更新主题时都会被清除。

> <https://github.com/discourse/discourse/commit/65e123498b4f8f260a8461e48995a3ca166b605e>
>
> Allowing the editing of remote themes has been something Discourse has advised a…gainst for some time. This commit removes the ability to edit or upload files to remote themes from Admin \> Customize to enforce the recommended practice.

在此提交中，我们已移除了本地编辑远程主题的功能，并在 Discourse 中强制执行这一最佳实践。

## 如果我的远程主题包含本地修改，会发生什么？

目前不会发生任何变化。您的主题将保持原样，直到您将其移除或从远程仓库更新。

## 如何保留我的本地修改？

### 如果您的修改仅涉及 CSS：

您可以将仅 CSS 的修改复制到一个全新的本地主题组件中。操作步骤如下：

1. 点击 安装
2. 点击 新建
3. 点击右侧窗格中的 编辑 按钮。
4. 将您的 CSS 修改复制到正确的文件（common/mobile/desktop）。
5. 保存并启用该主题组件。
6. 更新您的远程主题以覆盖本地修改，避免 CSS 重复。

### 如果您修改了 CSS 以外的内容（JS/模板）：

如果您希望保留本地修改，我们建议将该主题转换为本地主题。操作步骤如下：

1. 在 Admin \> Customize 下打开该主题。
2. 点击 导出 以下载包含您本地修改的主题。
3. 在主题列表下点击 安装，然后选择 `From your device`。
4. 上传导出的主题，并按照之前的步骤进行安装和启用。

对于有兴趣的用户，另一种选择是在 GitHub 上 fork 该远程主题，将您的修改提交到 fork 后的仓库，然后在您的 Discourse 实例上安装该 fork 版本。这使得您可以将您的修改基于主仓库的任何未来更新进行变基（rebase），而转换为本地主题则无法提供此选项。

最后， **请务必移除远程主题** ，以避免未来出现修改重复和混淆的情况。

---

<div class="post-metadata">

**Author:** ![p0fi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/p0fi/32/261315_2.png) [@p0fi](https://meta.discourse.org/u/p0fi)\
**Post date:** [2020年十二月23日 10:18 UTC](https://meta.discourse.org/t/restrict-editing-of-remote-themes/170051/4 "2020-12-23T10:18:52Z")

</div>

我曾使用此功能快速预览远程主题的变更。现在还有办法实现吗？我不希望随意提交高度调整、推送、拉取并更新，结果却发现调整幅度过大或过小 ☹

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2020年十二月23日 13:08 UTC](https://meta.discourse.org/t/restrict-editing-of-remote-themes/170051/5 "2020-12-23T13:08:23Z")

</div>

一种方法是使用 [Discourse Theme CLI（帮助你构建主题的控制台应用）](https://meta.discourse.org/t/discourse-theme-cli-console-app-to-help-you-build-themes/82950)，在提交之前尝试用不同的名称运行该组件。另一种方法是使用开发或测试站点。

---

<div class="post-metadata">

**Author:** ![p0fi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/p0fi/32/261315_2.png) [@p0fi](https://meta.discourse.org/u/p0fi)\
**Post date:** [2020年十二月23日 19:27 UTC](https://meta.discourse.org/t/restrict-editing-of-remote-themes/170051/6 "2020-12-23T19:27:38Z")

</div>

就用命令行工具！太棒了！我之前都不知道有这样的东西，这会有很大帮助。

感谢你的提示！

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2020年十二月23日 20:20 UTC](https://meta.discourse.org/t/restrict-editing-of-remote-themes/170051/7 "2020-12-23T20:20:55Z")

</div>

太棒了！你再也不必在网页浏览器中编辑了！🥂

---

<div class="post-metadata">

**Author:** ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)\
**Post date:** [2023年十二月1日 12:51 UTC](https://meta.discourse.org/t/restrict-editing-of-remote-themes/170051/8 "2023-12-01T12:51:06Z")

</div>


