Drupal常见错误

1.问题:系统的js效果失效,如views,admin,module filter。

原因:第一种可能是jquery版本问题,第二种可能是有js错误,用firebug检查下。

2.问题:panels里给page定义的动态path路径,访问是提示page not found

原因:设置了动态的路径参数后,还需要在参数设置那里给每个参数指定一个上下文环境的值。

3.如果在调用系统表单或者其它系统的内容时,没调出来或者调的不全,

原因可能是,调用的相关函数在相应模块的inc文件内,需要先module_load_include('inc', 'taxonomy', 'taxonomy.admin');进来。

4.views里的字段看不到,管理员能看到,是权限问题,如果查看已经设置了权限,是否启用了OG的group permission?

5.如果发现提交节点时,报错说body没填内容,但是body其实没有设置必填,那么检查下是否启用了field validation模块(以及rules模块)?

因为fieldvalidation 提供了一个默认的body min words的rules,这个对中文限制有错误,应该被禁止掉。

6.启用或卸载一个模块时报错,模块功能不能正常使用,甚至可能出现白屏,可能是数据表未安装或卸载成功。

确认模块已卸载,然后直接找到该模块安装的数据表(.install文件查看数据表信息),删掉即可。

7.admin menu突然没了?具体原因不明,但是清下缓存就好了

8.解决ckeditor不能上传图片的错误

$cookie_domain = 'example.com';

9.加入你的节点显示时,显示出了html代码,即代码没有被过滤掉,那么应当检查下是否这个节点保存时,没有保存对应的输入格式。

比如你的节点保存表单是自定义的,保存时,没有指定输入格式,那么在节点显示时,它就没有输入格式去处理。

10.form_set_error 只在表单验证函数里有实际效果,不要写到submit函数里。

11.Strict warning: Only variables should be passed by reference

我报错的代码场景:

$output .= drupal_render(drupal_get_form('import_apply_form'));

正确的写法:

$import_apply_form = drupal_get_form('import_apply_form');

$output .= drupal_render($import_apply_form);

就是说drupal_render函数的参数是引用型的,我们不能直接传函数进去当参数。

12.使用taxonomy_select_nodes函数,如果不限制数量,除了参数$limit = FALSE,还需要设置$pager = FALSE,否则就只显示默认分页的第一页的10个

taxonomy_select_nodes($term->tid, $pager = FALSE, $limit = FALSE, $order = array('t.sticky' => 'DESC', 't.created' => 'DESC'));

13.admin 7.x-2.0-beta3 和jquery update 7.x-2.3模块同时启用,admin模块的效果没了,两者冲突会报错。

admin模块的dev版修正了这个错误。

14.jquery update 7.x-2.3,启用后设置jquery版本为1.7以上,views中的字段的style setting里的效果不正常。

它的dev版本修正了这个错误,并且还提供了前台和后台主题分别加载不同版本的jquery的设置。

15.在服务器上使用 fopen() 函数打开非物理路径的文件地址,打不开。

是因为服务器上php参数配置 allow_url_open 没有设置启用,而如果服务器上无法修改设置,那么可以使用 drupal_realpath() 获取文件的物理路径作为参数传给fopen()。

16.List (integer)类型字段,取得的value值类型其实是字符串,而不是整数。

$node->field...['und'][0]['value']

$the_user_wrapper = entity_metadata_wrapper('user', $the_user);

$the_user_invite_comment_setting_value = $the_user_wrapper->field_invite_comment_notify->value();

17.使用video模块做的视频文件字段,flowplayer播放器,在view节点时,有时播放器不显示,貌似丢失了文件,但是编辑保存后,又好了。

看起来是缓存的问题,实际上这时发现缓存(哪个缓存表存储的文件缓存?调查下)中相应的视频文件存储的有时缺失url,只存储了fid,而播放器显示的代码中,是直接获取了缓存中的文件url,所以会造成“丢失”现象,应改成从fid获取整个文件的信息。

18.现象:某个模块的hook_init,没有被初始化缓存到cache_bootstrap表中的module_implements记录中,根本原因不明,经过调查,

$query = db_select('cache_bootstrap', 'cb');

$query->fields('cb', array('data'));

$query->condition('cb.cid', 'module_implements', '=');

$result = $query->execute();

$row = $result->fetchField();

$module_implements = unserialize($row);

print_r($module_implements['init']);

打印出的数组里,init项里没有该模块的名字。那么覆盖性的解决方案是直接去该记录初始化的地方去判断下,如果没有该模块,就强制加上该模块。

但是后来,由于修改了settings.php中的host地址,原来是db,现在改成了localhost,这个现象又没了!根本原因还未查明...

19.重定向循环错误,一般是与已有的判断跳转代码冲突,形成了死循环。

比如要实现需求:非登录用户访问网站,跳到登录页面

在hook_init里执行drupal_goto之前,除了要判断当前是否有用户登录外,还要过滤掉user/login页面,否则就会造成重定向循环错误。

20.自定义的一个多行文本框,填写规则是一行一个,提交后后台获取表单值,要分隔成数组。

$member_usernames = $form_state['values']['member_usernames'];

$temp = explode('\n', $member_usernames);

应该用双引号!

21.如果发现$node->title或者其它字段信息显示不正确,那么检查下在当前页面里,是否在别的地方有输出这个字段信息,而且是这样的方式:

$node->title = '***'; print $node->title;

这样的话,被强制赋值的$node就会被缓存起来,下次你用node_load时,它就读取你修改过的缓存了。

还可以在调用时,设置不读取缓存来避免这种情况:

node_load(arg(1), $vid = NULL, $reset = TRUE)

22.从服务器上的站点下载到本地来搭建环境,文件已同步,数据库也导入成功了,但是本地打开一看,好像没有样式和图片加载...

去文件系统配置的页面看了下,Temporary directory里写的是"/tmp",配置成"sites/default/files/tmp"。

23.配置phpmailer的发件箱地址时,要确保和站点邮箱地址一样,否则发不了邮件。

24.如果客户浏览器看不到任何js效果,对于其它网站也是如此,那么可能是客户的浏览器设置了禁止活动脚本。

25.ueditor上传图片时,报错:网络链接错误,请检查配置后重试!

检查settings.php中是否启用了$cookie_domain,应该注释掉。

猜你喜欢

转载自hao3721.iteye.com/blog/2009891