使用主题组件而非 iframe 创建主题计时器

最好直接弃用 iframe。作为一个有趣的个人挑战,我构思了一个粗略的概念验证,通过主题组件来应用计时器。目前,它会在帖子的第一条内容中添加一个计时器,并配有几个控制按钮。当前效果如下:

如果你希望我在此基础上进一步扩展,请告诉我。这是一个很有趣的自定义开发方向。

5 个赞

感谢 @tshenry 对此问题的跟进。iframe 方案对我们来说只是一个“快速粗糙”的临时办法,目的是让计时器功能先跑起来。但是的,我们绝对对你正在尝试的自定义计时器方案非常感兴趣!你的方案看起来更优雅、更整洁……但这已经远远超出了我的编程能力范围。所以再次强调,我非常期待看到你最终的成果,并希望能在我的论坛上应用它。

1 个赞

好的,听起来不错。我会继续推进,等有可以展示的成果后再向您汇报。

3 个赞

@tshenry 在构建这个主题时,我想知道您是否能让我选择将其应用于哪些类别或子类别?我不希望此主题应用于我论坛上的所有帖子,而仅希望应用于少数几个类别。

例如,在我们的 论坛 上,我希望“计时器主题”仅应用于“过往考试”类别中的帖子。理想情况下,我希望能精确选择“过往考试”类别中具体哪些帖子应用此功能,因为计时器功能在 99% 的情况下都很合适,但仍有少数帖子不适合使用计时器。不过,这完全可以通过将那 1% 不适合使用计时器的帖子移至其他类别,甚至直接删除来解决。

1 个赞

真巧你提到了这个!我刚刚添加了一个功能,允许指定一个标签作为决定秒表显示哪些主题的依据。这样可以避免秒表出现在“关于”类主题或其他你不想显示计时器的主题上:

这样对你来说是否可行?还是说在你的使用场景中,使用标签会有问题?

顺便问一下,还有其他方面需要考虑吗?功能基本已完成,我目前只是在优化代码并进行全面测试。应该本周末或下周某个时候就能准备好 :slightly_smiling_face:

2 个赞

顺便提一下,目前的样子是这样的:

2 个赞

我觉得这看起来完美!标签标识符也是对我上面问题的完美解决方案。干得漂亮!谢谢。

1 个赞

太好了,主题组件已发布!如果您发现任何问题或有改进建议,请随时告知。

另外,对于任何希望解决如何禁用 iframe 滚动这一原始问题的人,只需将以下代码添加到您选择的主题的 <kbd> </head> </kbd> 标签中:

<script type="text/discourse-plugin" version="0.8.18">
   api.decorateCooked($elem => $elem.children('iframe').attr("scrolling", "no"));
</script> 

(特别感谢 @vinothkannans 让大家认识到 decorateCooked()实用性 :grinning_face_with_smiling_eyes:

3 个赞