前段时间学习Drupal遇到一个头痛的问题,几经努力解决了问题,现将整个过程写下来,给其它的学习者一点启发,少费些脑细胞。
问题现象
我设计的网站有以下几个角色:管理员、设计组、测试组、注册用户和匿名用户。在网站设计基本完成,设置用户权限、测试用户使用时,发现只有注册用户、管理员点击“我的帐户”->“编辑”,可以“编辑”自己的帐户信息,包括特别重要的,修改自己的用户名、密码。自定义的角色如:设计组、测试组,都不能修改自己的帐户资料,怎么点都出现不了任何内容,空白一片。
查找过程
我是个网页设计初学者、Drupal初学者,开始怎么也找不到原因。
怀疑过的原因有:
1.权限设置有问题,没有给权限。但我给于自定义用户角色的权限比给注册用户的多,而且怎么设置、检查、调整都没有成功解决问题。
2.给于自定义用户角色“查看管理员主题”的权限。去除给于的权限,问题还是依旧。
3.在开发的过程中,几次修改角色名称,甚至手工修改过role表,但检查一遍相关的表,没有发现问题。
4.开发过程中,多次添加、删除与user相关的模块,导致系统的user模块出现问题,原打算把相关的模块都添加删除一遍,可删除模块后,网站的很多设置会丢失,前期开发的所有工作都白费,工作量巨大,不敢试。把以前的备份找出来,在另一台机器丰测试,安装、删除怀疑的模块,没有同样的问题。
最终解决
前天中午,实在不行了,在Drupal中国群上发问,群主很快给于回复,给于帮助。再上drupal.org网站上,用/user/%user/edit查找相关文档有了一些灵感。
下午到开发的机器上再面对问题,分别用firefox和chrome打开能编辑帐户资料的页面和如图一样的不能编辑帐户资料的页面,用“查看元素”和“审查元素”的方法逐行对比网页html代码。
发现问题关键:
能编辑帐户资料的页面
不能编辑帐户资料的页面
不能编辑帐户资料的页面怎么变成了panel,回想自己之前为了让用户资料编辑页面与主题页面的颜色一样,开启了/admin/structure/pages下的“用户编辑模板”/user/%user/edit页面,添加过一个panel,但是没有添加内容,这应该就是导致自定义用户角色无法编辑帐户资料的真正原因,一瞬间大彻大悟。将/user/%user/edit页面禁用,问题解决。
问题延伸
1.有什么问题,先看系统生成的网页代码,这样找问题,可少走弯路。
2.启用/user/%user/edit页面可覆写系统默认的用户帐户编辑页面。开发人员可以在上面添加其它想添加的内容,如添加一个panel,那么上面除了User(tokens)(编辑帐户资料的相关元素),其它所有能放在panel上的区块、元素也都能放在上面。