解读phpwind的主题定制化设计

最近研究phpwind源码过程中,发现它对发帖主题具有可定制化能力,而不是一概标准贴格式,能够根据具体应用场景定制化属性,让帖子信息结构化起来,具体功能以房屋买卖版块为例,可以分为出租、出售、求购等类型的帖子,如下图所示:

 

发帖的时候,能根据类型,定制各个属性,以出租为例,如下图所示:

 

 

在列表展示页里,也能根据定制化属性,来显示列表,以出租为例:

 

刚开始,我的初步判断是phpwind对这么几个应用广泛的场景单独做了页面,因为在后台配置中,没找到能定制这些参数的地方,但在源码里没找到这些定制化页面,因此我断定是有一套关于主题定制的模型,通过对模型的配置,达到对功能的定制,这引起了我的兴趣,通过对表结构的分析,发现有一组表是专门用来应对主题定制化的,表结构如下图所示:

 

所上图所示,

pw_topiccate为主题分类表,是最上层的抽象,表示在哪些版块里有定制化主题。

pw_topicmodel为主题分类模板信息,对应着各个定制化主题,如上例中的“出租”在里面就对应一项。

pw_topicfield为主题分类模板字段表,对于每个定制化主题所需的定制化字段都在这里配置

pw_topicvalue为定制化字段对应的值,表面后面会跟上一个num,对应modelId,这样每个model都会有一个单独的pw_topicvalue表来存储数据

pw_topictype为版块主题分类,可指定大版块下各个定制化主题的显示规则

根据以上数据表结构设计,就大致能知道如何实现这一套定制化设计了。拿浏览帖子为例,phpwind做了以下事情:

  1. 根据modelId得到定制化数据
    源码:
    |
    在getTopicvalue方法中,先是得到model信息,然后根据modelId从相应pw_topicvalue表里得到具体数据

    最后根据pw_topicfield表里配置的各个field,把value根据一定规则组装起来
     
  2. 根据modelId得到搜索版块的html代码
     
  3. 在模板read.htm里把以上得到的定制化数据显示出来

不过从以上设计发现,这个机制还不够完全定制化,因为对于每个新加的model都需要新加表pw_topicvalue来存储数据,因此phpwind也不能在后台管理功能里放开对这一套的配置,如果真正做到可配置,也许可以考虑放一个n多字段的大表,而不是分表来存定制化数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值