### [discuz如何自主控制弹框的显示](https://www.prosaas.cn/article/14794) **Published:** 2020-05-03T16:41:38 **Author:** 5201314 **Excerpt:** 本文实现功能: 控制弹框的显示与否功能使用场景在之前的一篇文章写道,discuz实现自动注册登录。但是我们又不… > 本文实现功能: > >     控制弹框的显示与否 ## 功能使用场景 在之前的一篇文章写道,discuz实现自动注册登录。但是我们又不想让那个提示信息出来。 在网上大概的搜索了一下,有的说后台可以设置,但是咔咔到后边瞅了一眼,它那个设置只是针对于固定的一些场景。 那么我们自己可以来写一个适合我们项目的显示方式 ## 弹框实现剖析 使用discuz一段时间的都知道,前台的弹框其实就是后台`showmessage`这个方法决定的。 我们用代码追踪到这个方法在`upload/source/function/function_core.php`文件里  大概在1424行 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122005819.png) 然后我们在追踪`dshowmessage`这个方法 最终这个方法的文件是在`upload/source/function/function_message.php` 这里 然后我们把代码拉到最后,可以看到一个`show_messge`的变量和加载了一个模板地址 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122005867.png) 这个时候我们就去找这个模板位置:`upload/template/default/touch/common/showmessage.htm` 在这个模板里边我们就能看到一个变量为`show_message`。 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006433.png) 为了证实模板里的show\_message和PHP文件里边的show\_message是一致的我们来做个测试 修改:`upload/source/function/function_message.php  ` 238行 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006487.png) 然后在页面进行测试得到的结果是没有问题的。俩个变量是一致的 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006234.png) ## 实现自己的显示方式 经过上边的测试,我们得知upload/source/function/function\_message.php 文件的238行的show\_message 与模板  upload/template/default/touch/common/showmessage.htm的show\_message一致。 那么我们就可以声明一个变量,如果是你想显示自己的样式就声明一个变量,然后在模板里边控制 以下是咔咔案例:只要你有这个需求咔咔的这个方案100%可以解决你的问题 这段代码是判断用户是否注册了,如果注册了就直接登录。(这里无需纠结,咔咔的案例是从原系统过来的。) 可以看到在showmessage中我新增了一个变量为is\_login,并且值为1 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006687.png) 我们既然需要在模板里使用这个值,那就照猫画虎,在upload/source/function/function\_message.php文件里也把is\_login声明为全局变量 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006153.png) 然后拿着这个值你就可以在upload/template/default/touch/common/showmessage.htm模板里边使用了 在这个里边加上你自己的if就可以了 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006843.png) 还有一种特别简单的方式就是在upload/source/function/function\_message.php这个239行控制进入的模板 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006826.png) 那么这个时候需要做什么呢!就是建这个模板了 在upload/template/default/touch/common这个目录下复制这个showmassge这个文件 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006448.png) 然后修改这个文件,让进入后直接跳转即可。 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006797.png) ## 实现效果 在登录时候弹框已经没有了 ## ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006140.png) 在其他地方该有的还是有的 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231215122006837.png) ## 总结 在把本文的文件都修改完了以后呢!在一会想要使用自己定义的模板就可以直接使用 is\_login就是你自定义模板的一个标识 showmessage('login\_succeed', 'forum.php',\['username'=>$username,'is\_login'=>1\],array('showdialog' => 1)); 以上就是discuz如何自主控制弹框的显示的详细内容,更多请关注知企PROSAAS其它相关文章! **Tags:** default, Discuz, function, if, php, 全局变量 **Categories:** Discuz ---