userinfo_plus信息增强插件 说明和介绍 功能增强

Forward 1月前 595

userinfo_plus信息增加插件

插件由来

机缘巧合,有个朋友让我更改一些需求,就顺便做这么一个xiunobbs的用户基础信息增强的插件吧。

介绍

在官方基础上增加昵称、性别、年龄、地区、签名这五项额外信息项。简要说明下大致功能

先上个图,

各个信息的选项的默认设置如上,这里简单说明下:

  • 默认信息都会显示在个人资料上,他人可以在用户页面查看到

  • 注册必选项 若勾选,则在注册时必须填该项信息

  • 昵称和性别 可以全局显示(如何实现下面简要说明),注意用户没有设置,不会显示

  • 性别 - 默认值 是在用户没有设置该项内容时,显示在个人资料页面上的值

  • 个性签名 - 默认值 同理同上

  • 个性签名 可以设置两个额外显示位置,分别是主题内容左下角,和回复的左下角,但是如果用户没有设置,则不会出现。

效果

路由my - 个人页面

设置地区

自动联动选择,使用 distpicker

设置生日

使用的是 datepicker



其他几个修改就很基本了。

首页

  • admin没有设置昵称,默认显示username

  • 性别 使用符号来显示

主题详情页

  • 个性签名 两处位置 可以选择开关

注册页


实现方式

数据实现

将上面五个字段内容存入数据表字段中,然后 配置使用kv表的setting来控制即可。

页面显示

利用hook和overwrite来将 信息显示出来

注意:

  • 为了替换全局昵称,本插件overwrite了几个页面,并设置了rank为100,但不保证有其他插件overwrite的rank大于本插件,若出现这种情况,请自己修改下。

  • 本插件只对官方版本上进行替换,第三方插件中如若出现用户名等信息,无法替换,如若需要,请联系我定制修改。或考虑后面覆盖到一些基础常用插件。

实现思考

Q1 - template无法overwrite

想要在my页面替换昵称的时候,就要overwritemy.common.template.htm这个根模板,但是发现没有生效,于是查看了下相关函数,发现模板的template和slot只是简单的替换,没有对template引用的文件到tmp目录下进行判断,而是直接根据路径去get内容,这样即使overwrite了也没有用,不知理解的是否正确?

于是就改了用hook并利用注释的方法来达到这个效果,

目的是为了将username修改成我们的昵称,正好这边前后都有hook,于是我hook了两个文件,并在my_common_avatar_before.htm中写入<!--,在my_common_username_after.htm开始就马上闭合注释,-->然后再将中间的内容自己写一遍。如下:

这样中间的内容就顺利被替换掉了!

但是你会发现,在user这个页面上,没办法用这个方法,

尝试了几次,发现HTML中注释不能嵌套,于是想利用PHP中的注释,但是也不行,因为中间包含了一个php语句,对也就是我们要替换的那个username,所以这个地方就没法替换了。如果你要替换 就自己手动替换吧,我把文件就放在了overwrite的htm下,同名为user.common.template.htm,你可以手动覆盖下。

Q2.没办法兼顾其他出现内容的地方

有想过,如何替换全局的username为我们的昵称,当时有个想法,

  • 既然现在都显示username,那么不妨将username看做我们的昵称,而将我们新建的”昵称“看成”username“,这样不是直接釜底抽薪了嘛,后来考虑到,关于username的关联问题,不知是否有的插件或者代码使用username作为某种条件或者查询内容,所以想法作罢

  • 还有一个也等同于釜底抽薪的方法,就是在逻辑controller层,将username对应的变量改成nickname,这样没有从根上修改username,但是也起到了显示的效果。感觉也可以!需要的小伙伴可以试试

  • 使用新的昵称,全局自己overwrite来替换,这个是最常规 最笨的方法了,而且这个方法对其他第三方的插件可能有很多遗漏,但是没办法,起码不会有其他问题吧?后面再慢慢扩展可以

Q3.有的页面overwrite了为啥还要hook

有的页面我自己overwrite了,为啥还要写某些hook,而不是直接写在overwrite的页面中,我是想把两者分开,overwrite和hook两个具体的目的分开,后面方便修改。也提高一些容错性吧?


最后于 1月前 被Forward编辑 ,原因: 插件介绍更新,生日选择日期 使用datepicker日期选择器
最新回复 (7)
  •  _1549375439 1月前
    引用 2
    不错不错
  • 神都俗人 1月前
    引用 3
    在哪里下载呢?
  • Forward 1月前
    引用 4
    神都俗人 在哪里下载呢?
    还没上传
  • 李不白 26天前
    引用 5
    这个好,什么时候提供呢?
  • Forward 22天前
    引用 6
    李不白 这个好,什么时候提供呢?
    官方不给上插件库。后面整理好了放GitHub吧,到时候贴地址
  • ame 21天前
    引用 7
    overwrite my.common.template.htm后,也要overwrite对应的my.template.htm ===》把第一行include的路径添上你插件的路径:
    ./plugin/*****/overwrite/view/htm/my.common.template.htm
    然后其他的my相关的也都要overwrite   ===》 ./plugin/*****/overwrite/view/htm/my.template.htm
    user,也是这么干的。。。
  • 李不白 18天前
    引用 8
    Forward 官方不给上插件库。后面整理好了放GitHub吧,到时候贴地址
    辛苦了!!期待!!
返回
发新帖