Topic Template Placeholder Text 主题组件

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

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

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

感谢回复 @merefield

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

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

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

太棒了!别担心,感谢 @merefield 的快速回复 :smiley:

1 个赞

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

1 个赞

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

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

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

1 个赞

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

我试试看!谢谢 @Rhidian :smiley:

1 个赞

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

非常感谢你们两位!:smiley: :smiley:

不客气,很高兴能帮上忙 :blush:

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

2 个赞

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

3 个赞

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

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

原始版本仓库:https://github.com/naidihr/discourse-topic-template-placeholders_original

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

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

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

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

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

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

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

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

4 个赞

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

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

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

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

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

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

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

Discourse 4.4.3

1 个赞

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

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