请选择 进入手机版 | 继续访问电脑版

東里論壇

 找回密码
 立即註冊

QQ登录

只需一步,快速开始

搜索
查看: 465|回复: 0

[使用心得] Discuz! X3.3优化修改(十八)——解决编辑帖子后分类信息forum_optionvalue数据表内容不同步问题

[复制链接]

286

主题

421

帖子

2602

积分

管理員

Rank: 9Rank: 9Rank: 9

积分
2602
发表于 2017-3-5 13:08:00 | 显示全部楼层 |阅读模式
发布分类信息的时候forum_typeoptionvar和orum_optionvalue两个表同时储存,但是读取数据的时候是从 forum_typeoptionvar 表里取出,这张表集合了所有分类信息的变量值。而已经发布的分类信息,重新编辑修改后发布 数据只会更新到forum_typeoptionvar,而forum_optionvalue表的数据不会更新,依然是最开始发布的内容。

修改办法,打开source/class/extend/extend_thread_sort.php,找到:
  1. C::t('forum_typeoptionvar')->update_by_tid($this->thread['tid'], array('value' => $value, 'sortid' => $parameters['sortid']), false, false, $optionid);               
  2. }
  3. if($typeexpiration) {
  4.                     C::t('forum_typeoptionvar')->update_by_tid($this->thread['tid'], array('expiration' => (TIMESTAMP + $typeexpiration)), false, false, null, $parameters['sortid']);
  5. }
复制代码
改为:
  1.                                         C::t('forum_typeoptionvar')->update_by_tid($this->thread['tid'], array('value' => $value, 'sortid' => $parameters['sortid']), false, false, $optionid);
  2.                                         $identifier = DB::result(DB::query("SELECT identifier FROM ".DB::table('forum_typeoption')." WHERE optionid = ".$optionid));
  3.                                         DB::query("UPDATE ".DB::table('forum_optionvalue'.$parameters['sortid'])." SET $identifier='$value',dateline=".TIMESTAMP." WHERE tid=".$this->thread['tid'], 'UNBUFFERED');
  4.                                 }
  5.                                 if($typeexpiration) {
  6.                                         C::t('forum_typeoptionvar')->update_by_tid($this->thread['tid'], array('expiration' => (TIMESTAMP + $typeexpiration)), false, false, null, $parameters['sortid']);
  7.                                         DB::query("UPDATE ".DB::table('forum_optionvalue'.$parameters['sortid'])." SET expiration=".(TIMESTAMP + $typeexpiration)." WHERE tid=".$this->thread['tid'], 'UNBUFFERED');
  8.                                 }
复制代码

这样就能实现在修改分类信息时同步修改forum_typeoptionvar和forum_optionvalue两张数据表内容,以便之后对forum_optionvaluen数据表内的数据进行调用!

forum_optionvalue表的问题较多,除上上面所说的不能同步外,假如某一版块开启分类信息,并且其中有主题使用了分类信息,如果将此主题删除,forum_optionvalue表中的数据并不会删除!

不但如此,后台如果修改分类信息中变量的类型,forum_optionvalue一样不会更新。


综合以上,Discuz! X3.3的forum_optionvalue只有在发布新主题使用到分类信息时写入数据,之后的任何更新,都不会同步更新到这个表中。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即註冊

本版积分规则

QQ|小黑屋|手機版|Archiver|東里論壇 ( 粤ICP备14015598号 ) 公安备案图标粤公网安备 44512202000019号

GMT+8, 2017-10-24 09:57 , Processed in 0.109378 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表