# Topic Template Placeholder Text 主题组件

**URL:** https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053
**Category:** Theme component
**Created:** [2020年四月23日 19:20 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053 "2020-04-23T19:20:00Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2020年四月30日 11:23 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/22 "2020-04-30T11:23:57Z")

</div>

> [@Ryan\_NR](#):
>
> 也许是我们的 Discourse 实例版本为 [v2.3.10](https://github.com/discourse/discourse/compare/632ef306e20c8857c23795baabe05a7617c490a1)？

在旧版本上测试非常困难。此功能旨在与最新的 `tests-passed` 分支兼容。它很可能 simply 不兼容较旧版本的 Discourse 实例。

您在控制台中看到 JavaScript 错误了吗？这可能是导致渲染不完整的原因。这并非一个样式组件 🙂

偶尔，核心代码库会发生重大变更，导致所需的覆盖逻辑必须调整，从而不再支持旧代码库。不过，我的 PR 中包含了许多非常谨慎的覆盖实现，旨在对核心代码的变更具有鲁棒性。但即便如此，能做的也有限。

---

<div class="post-metadata">

### Author: ![Ryan\_NR](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ryan_nr/32/133654_2.png) [@Ryan\_NR](https://meta.discourse.org/u/Ryan_NR)
#### Post date: [2020年四月30日 11:45 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/23 "2020-04-30T11:45:07Z")

</div>

感谢回复 @merefield

控制台中的这个错误确实看起来与此相关：

 ![Screenshot 2020-04-30 at 12.40.53](https://global.discourse-cdn.com/meta/original/3X/2/0/208681b0ff606f34c80fc21c4e6455ad53401cc9.png)

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2020年四月30日 13:04 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/24 "2020-04-30T13:04:33Z")

</div>

是的，这是一个非常基本的兼容性问题。装饰器现在需要从新的位置导入，因为旧的导入位置已被弃用。您的旧安装中很可能不存在该位置。

建议您等待 Discourse 更新到更现代的版本。

---

<div class="post-metadata">

### Author: ![Ryan\_NR](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ryan_nr/32/133654_2.png) [@Ryan\_NR](https://meta.discourse.org/u/Ryan_NR)
#### Post date: [2020年四月30日 13:17 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/25 "2020-04-30T13:17:09Z")

</div>

太棒了！别担心，感谢 @merefield 的快速回复 😃

---

<div class="post-metadata">

### Author: ![Rhidian](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rhidian/32/176630_2.png) [@Rhidian](https://meta.discourse.org/u/Rhidian)
#### Post date: [2020年五月1日 09:20 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/26 "2020-05-01T09:20:42Z")

</div>

@Ryan_NR - 在此期间，您可以尝试原始版本，它可能不需要这些相同的依赖项？

> **[GitHub - naidihr/discourse-topic-template-placeholders\_original: Original version of the plugin with JQuery element](https://github.com/naidihr/discourse-topic-template-placeholders_original)**
>
> Original version of the plugin with JQuery element

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2020年五月1日 09:23 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/27 "2020-05-01T09:23:37Z")

</div>

我相信主题分支功能是有效的，因此你可以在同一个主题下维护三个分支（tests-passed、beta 和 stable）。

不过，这无法覆盖所有用户，而且维护这些分支并确保它们正常运行需要大量额外工作，尤其是当维护者是志愿者时。

---

<div class="post-metadata">

### Author: ![Rhidian](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rhidian/32/176630_2.png) [@Rhidian](https://meta.discourse.org/u/Rhidian)
#### Post date: [2020年五月1日 09:27 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/28 "2020-05-01T09:27:14Z")

</div>

感谢 @merefield。我原本担心分支可能会引起混淆，所以创建了一个新仓库——只是想确认这是否能消除 @Ryan_NR 的版本依赖问题？

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2020年五月1日 09:27 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/29 "2020-05-01T09:27:57Z")

</div>

在这种情况下，您的解决方案更简单。我只是在策略性地表达我的想法 🙂

---

<div class="post-metadata">

### Author: ![Ryan\_NR](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ryan_nr/32/133654_2.png) [@Ryan\_NR](https://meta.discourse.org/u/Ryan_NR)
#### Post date: [2020年五月1日 09:36 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/30 "2020-05-01T09:36:16Z")

</div>

我试试看！谢谢 @Rhidian 😃

---

<div class="post-metadata">

### Author: ![Ryan\_NR](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ryan_nr/32/133654_2.png) [@Ryan\_NR](https://meta.discourse.org/u/Ryan_NR)
#### Post date: [2020年五月1日 09:38 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/31 "2020-05-01T09:38:21Z")

</div>

明白了……这完全行得通！

非常感谢你们两位！😃 😃

---

<div class="post-metadata">

### Author: ![Rhidian](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rhidian/32/176630_2.png) [@Rhidian](https://meta.discourse.org/u/Rhidian)
#### Post date: [2020年五月1日 09:54 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/32 "2020-05-01T09:54:10Z")

</div>

不客气，很高兴能帮上忙 😊

我已更新了说明，以防其他人遇到同样的问题。

---

<div class="post-metadata">

### Author: ![davidkingham](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/davidkingham/32/119528_2.png) [@davidkingham](https://meta.discourse.org/u/davidkingham)
#### Post date: [2020年五月6日 01:08 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/33 "2020-05-06T01:08:28Z")

</div>

我刚刚意识到，这段文字不仅出现在创建新主题时，在回复帖子时也会显示。至少在我的使用场景中，这样效果不太好。有没有可能让它像现在的主题模板一样，仅在创建新主题时显示？

---

<div class="post-metadata">

### Author: ![Rhidian](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rhidian/32/176630_2.png) [@Rhidian](https://meta.discourse.org/u/Rhidian)
#### Post date: [2020年五月6日 08:20 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/34 "2020-05-06T08:20:34Z")

</div>

> [@Rhidian](#):
>
> 原始版本仓库：[https://github.com/naidihr/discourse-topic-template-placeholders\_original](https://github.com/naidihr/discourse-topic-template-placeholders_original)

观察得很仔细。原始版本的行为是正确的——它仅在新主题中显示，与主题模板的方式相同。

你可以在这里下载原始版本。

原始版本仓库：[https://github.com/naidihr/discourse-topic-template-placeholders\_original](https://github.com/naidihr/discourse-topic-template-placeholders_original)

这只是一个简单的 jQuery 切换，用于将模板文本移动到占位符（如果它与模板文本匹配）。

@merefield 你能再检查一下这个问题吗？

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2020年五月6日 08:22 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/35 "2020-05-06T08:22:48Z")

</div>

好的。所以你是希望这仅在首次发帖时发生吗？是否有任何情况下你希望它在后续发帖时也发生？

---

<div class="post-metadata">

### Author: ![Rhidian](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rhidian/32/176630_2.png) [@Rhidian](https://meta.discourse.org/u/Rhidian)
#### Post date: [2020年五月6日 08:46 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/36 "2020-05-06T08:46:31Z")

</div>

谢谢罗伯特。不，就像描述的那样——和原始功能一样工作。只有当自定义模板文本与编辑器中的文本匹配时，才应将其转换为占位符文本进行显示。

这就是为什么我最初要使用 JQuery 变通方法，因为我只能在渲染完成后才能进行该检查？

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2020年五月6日 09:47 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/37 "2020-05-06T09:47:03Z")

</div>

已解决并添加了一个默认值为 TRUE 的设置，将其限制为仅适用于首帖。

这实际上增加了一个新功能：如果您愿意，主题模板（或自定义占位符文本）现在可以应用于所有帖子 🙂

> <https://github.com/naidihr/discourse-topic-template-placeholders/pull/4>
>
> …d/or placeholder transformation only occurs on 1st post or not default true

我已在开发和生产环境中进行了相当全面的测试，但欢迎您自行检查。

---

<div class="post-metadata">

### Author: ![Rhidian](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rhidian/32/176630_2.png) [@Rhidian](https://meta.discourse.org/u/Rhidian)
#### Post date: [2020年五月6日 10:15 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/38 "2020-05-06T10:15:52Z")

</div>

谢谢，Robert。我已将其合并以进行测试。

它修复了所描述的问题，但引入了一个新问题。如果您打开一个草稿并重新打开它，草稿文本将会丢失。请您检查一下这个问题？

正确的行为应该是：只有当编辑器中显示的文本与模板文本匹配时，才进行转换。

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2020年五月6日 10:17 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/39 "2020-05-06T10:17:04Z")

</div>

> [@Rhidian](#):
>
> 该修复解决了所描述的问题，但引入了一个新问题。如果您打开一个草稿并重新打开它，草稿文本将会丢失。能否请您检查一下？

我目前还无法复现……您能否提供详细的复现步骤（STR），包括您遇到此问题时具体的设置？我的草稿回复和草稿新主题都能正常恢复。

---

<div class="post-metadata">

### Author: ![Rhidian](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rhidian/32/176630_2.png) [@Rhidian](https://meta.discourse.org/u/Rhidian)
#### Post date: [2020年五月6日 10:35 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/40 "2020-05-06T10:35:39Z")

</div>

如果访问使用自定义模板的主题，会出现以下情况：我开始撰写草稿，然后离开网站。再次回到网站后，点击右上角的头像图标和用户名，再选择“草稿”。

 ![image](https://global.discourse-cdn.com/meta/original/3X/5/b/5b289bf548c60fd07e66cc61e45b385332180df4.png)

接着，我点击已保存草稿的“继续编辑”。

 ![image](https://global.discourse-cdn.com/meta/original/3X/3/1/31a807a1b8be541d3af69e8e049e286c61e79ae2.png)

但文本并未出现，而是显示了占位符文本。

Discourse 4.4.3

---

<div class="post-metadata">

### Author: ![Rhidian](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rhidian/32/176630_2.png) [@Rhidian](https://meta.discourse.org/u/Rhidian)
#### Post date: [2020年五月6日 14:11 UTC](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053/41 "2020-05-06T14:11:01Z")

</div>

与 @merefield 合作后，我们认为现已修复了此问题及另一个问题。

@davidkingham - 请您确认一下好吗？

[上一頁](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053.md?page=1)

[下一頁](https://meta.discourse.org/t/topic-template-placeholder-text-theme-component/149053.md?page=3)
