diy调用日志模块,若选择过滤封面,然后再推送博文的时候总是会出现数据不匹配的问题,这个问题困扰了我很久,今天终于被我解决了。
原因是在发博文的时候,选择图片上传时包括“上传图片”,“相册图片”和“网络图片”,若选择“上传图片”,调用swfupload这个插件,然后会生成一个隐藏域,名称为picids,里边存的值为home_pic中picid 的值,但是选择“相册图片”和“网络退片”则不会生成 picids,正是这个picids 是产生了数据不配的根本原因。若picids值不为空,home_blog 的数据表中picflag值会变为1, 最主要的还是home_blogfiled表中pic 的值会是图片的地址,也是是说这个值会是推送博文时图片的封面。若picids 的是为空,home_blogfiled中 pic的值为空,及推送时diy的模块会认为此博文是没有封面的博文,导致出现数据不匹配的警告。
下边介绍解决办法,我想的是修改 source/function/function_blog .php文件。
在 C::t('home_blogfield')->insert($fieldarr);之后加入此段代码
if( empty($fieldarr['pic']) ) {
if( preg_match(" ",$message,$match) ){
C::t('home_blogfield')->update($blogid,array("pic"=>$match[1].""));
C::t('home_blog')->update($blogid, array("picflag"=>1));
}
}
判断fieldarr这个数据存的值就是要插入数据库的,我先判断pic的值,pic 不为空就是选择了“ 上传图片”,这样就不必做任何修改数据库的行为,但是若pic的值为空,及选择了“相册图片”,我们需要修改home_blogfiled 中pic的值,将其改为图片的地址,然后修改home_blog中picflag改为1.
由于我权限较低,无法再bug解决里发帖子,所以将文章发在了这个位置。发在哪里不重要,最重要的能帮助大家了解了此bug,不会再被困扰! |