• 谈天说地
  • 教程:简单实现[发帖页面]自动选择版块(分类)

前言

我一开始上手程序,发帖总是忘记选择版块,可能是操作习惯吧。

当我们进入某个版块后,依旧会在主题列表右上方出现"发表新主题",如图:

QQ截图20160912211809.png

这时候我就在想,如果进入版块后再点击"发表新主题",可以自动选择该版块的分类就好了。比如进入"教程"版块,然后点击"教程"版块帖子列表右上方的"发表新主题"后,可以自动把发帖页面的版块分类选择为"教程"。

于是抱着好奇心去看发帖页面的模板,才发电脑版的编辑器也是通过插件实现的,路径是"Plugin/Simditor/",自带的富文本编辑器插件。

很快就找到了方法,可以在模板中使用php语言,对的,可以直接使用。但是要把模板变量的值赋给php的变量,就要多多注意,这里我尝试了十几次才搞明白。官方给出的开发文档太简陋了,很多东西都要自己去测试,调试一个页面刷新几百次都可能。

正文

其实要实现上述功能,很简单:使用get进行传值,然后再用php的逻辑运算符做条件比较,当条件成立就输出selected="selected",这是html下拉框的选中标签。

首先,找到模板文件"View/hy_boss/forum_thread.html",这是版块帖子列表的模板,我们需要为"发布新主题"的链接加上"小尾巴",用get的方式进行传值。

找到这段代码(我的模板更改过,所以不知道这段代码是第几行)

<a href="{php echo WWW.URL('post','');}" ><img src="{#WWW}View/hy_boss/Write.png" >

将其替换成

<a href="{php echo WWW.URL('post','');}?fid={php echo forum($forum,$fid,'id');}" ><img src="{#WWW}View/hy_boss/Write.png" >

其中的"小尾巴"的 {php echo forum($forum,$fid,'id');} 是输出所在版块的id,我们要将这个id传到发帖页面进行匹配,完成自动选择分类。

然后,我们需要找到插件模板文件"Plugin/Simditor/t_post_index.hook"

找到这段代码(第5行)

<option value="{$v['id']}">{$v['name']}</option>

将其替换成

<option value="{$v['id']}" <?php if(!empty($_GET["fid"])){if($_GET["fid"]==$v['id']){echo ' selected="selected"';}}?>>{$v['name']}</option>

原理:先判断是否有fid的传值,没有就不执行后面的语句,如果有就比较get过来的版块id和下拉框中的版块id,如果有相同的就加上"selected="selected",这是html下拉框默认选中标签,加上就会成为默认选中项。如果条件都不成立,就不会输出任何内容,就需要用户自己选择分类。

至此,如果编辑正确,那么就能正常使用该功能了。如图所示:

QQ截图20160913231206.png

QQ截图20160913230959.png

最后

我再重述下这个的功能,当进入某个版块后,点击"发布新主题"后,会在发帖页面自动选择分类为你刚才所在的版块。而不需要手动选择,当然,你也可以点击下拉框选择其他的分类。