Rain

前尘旧事,几孤风月,似水长眠; 世无定事,问尽风流,只为一笑

drupal注册时提供省市二级联动模块profile_china

功能需求

对于一个幅员广阔的国家,您甚至可以提供一个四级联动菜单来获得用户准确的来源,而对于期望知道用户来源的类型网站(如社区,论坛,企业,或者drupalchina.org本身等)来说,提供一个二级(省市)或三级(省市县)联动菜单是很正常的事情。但drupal本身自带的注册模块及taxonomy本身并不提供类似的功能。

一般解决方案

1,用户注册模块一般提供二级联动菜单即可,对于内容节点,比如企业资料,供求信息等,提供三级菜单更方便站点对各类信息进行分类导航。

2,对于内容节点的三级联动菜单,您可以选择taxonomy+hierarchical_select来完成这一功能,hierarchical_select是一个优秀的联动菜单选择框,您在选择一级分类后二级分类将自动弹出并提供选择。我在一个网站中使用过这一模块,效果良好,您可以点击图片查看现实的效果。

联动菜单示例

 3,如果您要在用户注册菜单中就实现三级联动,使用现有的资源在profile模块中实现比较呆板,我建议您使用usernode或者bio来将用户资料转化为内容节点,这样也是比较轻松地实现在用户注册时提供taxonomy分类进行选择,但您会因此管理更多的模块。

4,最佳的解决问题的办法就是在profile中直接实现二级联动模块,这也是profile_china提供的功能,profile_china提供了简洁的安装功能,您只需要启用本模块,将自动载入包括香港台湾等在内的一级地区及相关的二级地区,启用后使用简单的设置即可以完成如下所示的效果。

   附注:去年曾经做过一个山寨版的开心网的drupal项目(http://www.pk086.com/),并获得了一些朋友的指导与肯定,但由于事务烦忙,另外商业路线图太长,所以后面就暂停开发了。在经过反复权衡后,我还是决定挑战一下自己,打算花一个净月的时间用drupal制作一个行业的商业sns网站,相信这是一个确定一种行业模式的问题,有兴趣的或者已经在开发该领域的朋友可以留言共同讨论与学习,在该SNS系统中将提供b2b,b2c及相关的sns功能进行聚合,b2c功能将直接使用http://www.214xianhua.com的成熟模式(该网站是一个drupal+ubercart的成熟的商业应用产品,年营收利润约在30万元左右)开发完成后我将在社区应用分坛中对本项目进行详细描述。

Profile_china 方案

如何使用

1,您需要预先在profile中提供两个选择列表框来容纳本模块提供的资料,列表选择框请保留空值不要留任何内容,名字可以叫比如province与city,因为有些城市是直辖市,并没有二级分类,所以请在city的列表框中不要选择本框是必选的。

2,在模块列表中雇用本模块,将在数据库中建立省级与地区级两个表,所有数据已经自动导入,包括行政省,直辖市及台湾香港澳门与国外的一级分类表与300多个地级城市的二级表,如果您需要提供额外的,请直接修改profile_china_install中的相关部分:

3,在用户管理>二级联动菜单设置页中选择默认的选项及用于省级与地区级的已经建立的两个选择列单,请保证两个选择列表使用的是相同的分类。

4,您转到用户注册页面即可以看到上图中的效果,在用户修改页中也会出现类似的效果。

实现原理

1,在表单显示的钩子中对user_regiser及user_edit中上述提供的两个表单的省级表单使用一级分类表中的数据进行填充,并生成所有二级分类数据默认不显示

2,在用户改变一级地区的分类时,将二级分类的数据替换为相应的分类列表,为了尽可能的减少js的文件的太小,模块采用了togger的功能,并没有使用js进行真正的替换,只有当用户提交表单的时候,再次调用验证的钩子程序,通过一级分类获得二级分类的值并提交

3,在提交插入或者修改前将表单中不使用的列表框的值均置为空。

注意
============

本人的整个drupal开发系统都是基于ut8编码,对drupal版本在代码级别汉化以提高性能,所以本模块源码中直接以中文编写,您如果讨厌这样的做法,请将程序编码为ascii并将所有的中文再E化,否则您在使用时稍加注意

点击这儿 下载该模块

附件大小
hs.jpg10.23 KB
pc.jpg11.54 KB
profile_china.rar8.09 KB
粤ICP备06043998号 | 未经站长同意,请勿随意转载本站内容 | 站点地图 | 友情链接 | 与我联系 | QQ:2 1 0 7 3 4 5 2