Phpcms v9删除文章不能同步删除相关关键词数据的解决方法
最近在项目中发现,Phpcms v9内容模型删除文章不能同步删除关键词数据表v9_keyword、v9_keyword_data的相关数据,导致文章删除了而关键词还在,以至于相关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);
}
}具体见phpcmsmodulescontentfieldskeywordupdate.inc.php文件。
但是Phpcms v9默认程序存在一个bug,删除文章的方法里边却忘记了同步删除关键词数据表v9_keyword、v9_keyword_data的相关数据。
我们具体找到phpcmsmodulescontentcontent.php中的delete()函数,在大约332行【删除全站搜索中数据$this->search_db->delete_search($typeid,$id);】的下面加入以下代码:

这样,达到自动减少tag的使用数【$keyword_db->update(array('videonum'=>'-=1'), array('id'=>$k_v['tagid']));】,以及删除线管关联的目的【$keyword_data_db->delete(array('siteid'=>$siteid, 'contentid'=>$id.'-'.$modelid));】。
希望这一分享对碰到此类问题的朋友有所帮助,估计一般用户还没留意这个问题吧~
上一篇:Phpcms V9内容模型列表标签where条件失效的修改方法
栏 目:PHPCMS
下一篇:PHPCMS首页循环输出栏目及文章时怎么隐藏某些栏目?
本文标题:Phpcms v9删除文章不能同步删除相关关键词数据的解决方法
本文地址:https://zz.feitang.co/CMSjiaocheng/26355.html
您可能感兴趣的文章
- 11-19phpcms调用全站热点文章月排行的代码
- 11-19phpcms v9 搜索页显示自定义字段
- 11-19phpcms v9 内容页调用当前栏目名称及链接/上级栏目名称及链接方法
- 11-19phpcms V9基础知识之:常用文件目录结构
- 11-19phpcms v9 彻底去除自带的水印功能的方法
- 11-19phpcms在nginx的rewrite伪静态标准写法
- 11-19phpcms V9基础知识之:默认templates主题模板文件目录结构介绍
- 11-19Phpcms V9 调用全站文章排行的解决方法
- 11-19Phpcms V9 调用随机文章的实现方法
- 11-19phpcms v9分页函数pages中上一页,下一页文本内容修改方法


阅读排行
推荐教程
- 09-22phpcms是什么框架
- 09-22phpcms手机端如何取消伪静态
- 11-12phpcms如何使用水印功能
- 11-19phpcms调用全站热点文章月排行的代码
- 11-12phpcms不限制模型进行全站搜索
- 11-12phpcms栏目标签调用代码大全
- 11-12phpcms二次开发用拼音作为tags列表页路径的方法
- 11-12如何用phpcms调取指定位置的新闻列表
- 11-16Phpcms V9列表分页自定义页码文字(改成中文)
- 11-16phpcms ajax列表分页加载更多




