Loading... Phpcms v9删除文章不能同步删除相关关键词关联数据的修正方法 Tag标签出现的位置有:列表页和文章页的右侧栏【随机标签】,以及文章内页的文章末尾的【相关标签】。 而默认Phpcms v9的标签tag功能则是通过v9_keyword、v9_keyword_data两个表关联文章模型的文章。 具体关联的方法: $keyword_db = pc_base::load_model('keyword_model'); $keyword_data_db = pc_base::load_model('keyword_data_model'); pc_base::load_sys_func('iconv'); if (is_array($data) && !empty($data)) { $siteid = get_siteid(); foreach ($data as $v) { $v = defined('IN_ADMIN') ? $v : safe_replace(addslashes($v)); $v = str_replace(array('//','#','.'),' ',$v); if (!$r = $keyword_db->get_one(array('keyword'=>$v, 'siteid'=>$siteid))) { $letters = gbk_to_pinyin($v); $letter = strtolower(implode('', $letters)); $tagid = $keyword_db->insert(array('keyword'=>$v, 'siteid'=>$siteid, 'pinyin'=>$letter, 'videonum'=>1), true); } else { $keyword_db->update(array('videonum'=>'+=1'), array('id'=>$r['id'])); $tagid = $r['id']; } $contentid = $this->id.'-'.$this->modelid; if (!$keyword_data_db->get_one(array('tagid'=>$tagid, 'siteid'=>$siteid, 'contentid'=>$contentid))) { $keyword_data_db->insert(array('tagid'=>$tagid, 'siteid'=>$siteid, 'contentid'=>$contentid)); } unset($contentid, $tagid, $letters); } } 具体见`phpcms\modules\content\fields\keyword\update.inc.php`文件。 但是Phpcms v9默认程序存在一个bug,删除文章的方法里边忘记了同步删除关键词数据表v9_keyword、v9_keyword_data的相关数据。 我们具体找到`phpcms\modules\content\content.php`中的`delete()`函数, 在大约332行【删除全站搜索中数据`$this->search_db->delete_search($typeid,$id);`】的下面加入以下代码: 代码如下: //删除关键词中的关联数据start $keyword_db = pc_base::load_model('keyword_model'); $keyword_data_db = pc_base::load_model('keyword_data_model'); $k_r = $keyword_data_db->select(array('siteid'=>$siteid, 'contentid'=>$id.'-'.$modelid)); if($k_r) { //更新关键词使用数量 foreach ($k_r as $k_v) { $keyword_db->update(array('videonum'=>'-=1'), array('id'=>$k_v['tagid'])); } //删除关键词关联数据 $keyword_data_db->delete(array('siteid'=>$siteid, 'contentid'=>$id.'-'.$modelid)); } //删除关键词中的关联数据 这样,达到自动减少tag的使用数【`$keyword_db->update(array('videonum'=>'-=1'), array('id'=>$k_v['tagid']));`】,以及删除线管关联的目的【`$keyword_data_db->delete(array('siteid'=>$siteid, 'contentid'=>$id.'-'.$modelid));`】。 Last modification:September 21, 2022 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏