我能在 head_tag 中显示模态框吗?

你好 @david,有什么办法可以在 head_tag.html 的脚本中显示模态框吗?谢谢。

技术上讲,你可以通过大量的 hack 来实现,但不推荐这样做。

相反,你应该使用插件 API 进行扩展,然后从该代码中触发模态框。你能详细解释一下你正在尝试做什么吗?你是否已经解决了这个问题?

1 个赞

Sam您好,我有一个类似的问题。

对于我们的网站,我们只使用了 head_tag 来进行自定义。之前,我们使用 magnific 和 jQuery 以及 iframe 来用来自不同域的可交互列表项填充模态框,但我们认为 Discourse 最近终于正式放弃了 magnific/jQuery,因为点击相同的链接没有任何反应(控制台中也没有任何内容)。

所以我在寻找下一个最佳方案。您能确认使用 DModal 是最适合我需求的方案吗?任何帮助都将非常有益!

这是我们过去用来附加 magnific 弹出触发器的一些代码。

   if (window.jQuery) {
        const $document = $(document)
        $document.on('click', '.otpc-magnific-trigger', function() {
            var $button = $(this)
            if ($button.hasClass('initialized')) {
                $button.magnificPopup('open')
            } else {
                $button.magnificPopup({
            type: 'inline',
            preloader: false
            })
                $button.magnificPopup('open')
                $button.addClass('initialized')
            }
            return false
        })

您好 Brandon,

通常我们建议避免使用“head 标签”进行任何复杂的自定义。您应该考虑设置一个基于 Git 的主题。

一旦您设置好了,那么是的,DModal 可能是您需要的。我们这里有一些关于它的文档:

1 个赞

您好 David,感谢您的回复。

我们确实有一个基于 Git 的自定义主题,主要在 head_tag.html 中修改我们的 JavaScript;如果之前不够清楚,我很抱歉。我们一直使用 script 标签来处理任何 Handlebars 模板,但我看到建议为某些连接器模板使用专用文件。

您能确认 magnific 不再兼容 Discourse 吗?我正在尝试确定导致我们弹出窗口功能中断的原因。

1 个赞

我不知道 magnificPopup 有任何变化,但我们确实计划很快将其移除,因此我建议改用已记录的 DModal API。

最近发生的一项变化是我们加载 JQuery 的方式。它现在在启动过程的稍后阶段可用。因此,window.JQuery 可能在 Discourse 启动后才能使用。

您可以通过将 <script> 切换为 Discourse 的“插件初始化程序”来使脚本在启动后运行:

<script type="text/discourse-plugin" version="0.8">
1 个赞