15621857753

phpcms删除文章不能同步删除tag关键词v9_keyword的解决方法

来源:齐鲁建站 栏目:PHPCMS 阅读: 日期:2020-10-15

PHPCMS文章被删除时,如果文章里面有图片,会同步删除图片,这样可以减少网站空间的占用,不过同时存在的关键词却不能同步删除,这样时间久了势必会让数据库变得庞大,关键是TAG表会出现死链提示,今天齐鲁建站小编就来说说phpcms删除文章不能同步删除tag关键词v9_keyword的解决方法。

下面就来说下phpcms同步删除tag关键词v9_keyword的方法。两种方法。

注意,方法一最近已经失效,方法二继续有效!

方法一,直接上步骤:

打开文件phpcms\modules\content\content.php,找到delete(),大约在332行

也就是【删除全站搜索中数据$this->search_db->delete_search($typeid,$id);】,在其下面加入如下代码:

$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));
}

如图所示:

phpcms,删除tag关键词,删除v9_keyword

解析一下上面的代码:

$keyword_db->update(array('videonum'=>'-=1'), array('id'=>$k_v['tagid']));

这句是自动减少tag的使用数的目的

$keyword_data_db->delete(array('siteid'=>$siteid, 'contentid'=>$id.'-'.$modelid));

这句是删除相关关链TAG的目的

方法二,直接上步骤 (2020年10月16日亲测可用) :

第一步,打开文件phpcms/modules/content/fields/keyword/updata.inc.php

找到:

$keyword_data_db->insert(array('tagid'=>$tagid, 'siteid'=>$siteid, 'contentid'=>$contentid));

修改为:

if (!$keyword_data_db->get_one(array('tagid'=>$tagid, 'siteid'=>$siteid, 'contentid'=>$contentid))) { 
$keyword_data_db->insert(array('tagid'=>$tagid, 'siteid'=>$siteid, 'contentid'=>$contentid));
}

第二步,打开文件phpcms/modules/content/content.php

找到:

$this->comment->del($commentid, $siteid, $id, $catid);

在下面添加:

$this->keyword_db = pc_base::load_model('keyword_model');
$this->keyword_data_db = pc_base::load_model('keyword_data_model');
$keyword_all=$this->keyword_data_db->listinfo(array('contentid'=>$id.'-'.$modelid));
$this->keyword_data_db->delete(array('contentid'=>$id.'-'.$modelid));
foreach($keyword_all as $keyword_a){
    $same_keyword=$this->keyword_data_db->listinfo(array('tagid'=>$keyword_a[tagid]));
    if(empty($same_keyword)){
        $this->keyword_db->delete(array('id'=>$keyword_a[tagid]));
    }
}

如下图所示:

以上就是关于phpcms删除文章不能同步删除tag关键词v9_keyword的解决方法的所有内容,希望可以帮助到大家。

阅读本文的人还可以阅读:

phpcms列表页如何调用tag关键词 有图则显示缩略图

phpcmsV9调用全站和内容页所有tags关键字方法

修改phpcmsv9网站系统最新版本tag的伪静态设置