网(LieHuo.Net)教程 PHPCMS 添加栏目获取关键字的功能,第一步:增加名为category_tag的数据表(前缀与你的PHPCMS程序安装时选用的前缀相同,例如:phpcms_category_tag)
表的结构如下
索引类型
第二步:找到include/admin/文件夹下的content.class.php
以下为引用的内容: function add($data, $cat_selected = 0, $isimport = 0) { global $_userid, $_username,$CATEGORY; if(!$this->set_catid($data['catid'])) return false; ..... } 将第一行 global $_userid, $_username,$CATEGORY, $MODEL; 改为 global $_userid, $_username,$CATEGORY, $MODEL,$action_add; $action_add=__FUNCTION__; |
第二步找到找到/include/fields/keyword文件夹下的input.inc.php
这个步骤由于改变内容比较多,请直接将如下代码覆盖原来的代码:
以下为引用的内容: function keyword($field, $value) { global $catid, $action_add; if (! $value) { if (extension_loaded ( 'scws' )) { $data = $this->data ['title'] . $this->data ['description']; require_once PHPCMS_ROOT . 'api/keyword.func.php'; $value = get_keywords ( $data, 2 ); } if (! $value) return ''; } if (strpos ( $value, ' ' )) { $s = ' '; } elseif (strpos ( $value, ',' )) { $s = ','; } $keywords = isset ( $s ) ? array_unique ( array_filter ( explode ( $s, $value ) ) ) : array ($value ); foreach ( $keywords as $tag ) { $tag = trim ( $tag ); $existtag = $this->db->get_one ( "SELECT `tagid` FROM `" . DB_PRE . "keyword` WHERE `tag`='$tag'" ); $catexisttag = $this->db->get_one ( "SELECT `tag` FROM `" . DB_PRE . "category_tag` WHERE `tag`='$tag' AND `catid`='$catid'" ); $replace_into_existtag = "REPLACE INTO `" . DB_PRE . "keyword` (`tag`,`usetimes`,`lastusetime`) VALUES('$tag','1','" . TIME . "')"; $replace_into_catexisttag = "REPLACE INTO `" . DB_PRE . "category_tag` (`tag`,`catid`,`usetimes`,`lastusetime`) VALUES('$tag','$catid','1','" . TIME . "')"; $update_existtag = "UPDATE `" . DB_PRE . "keyword` SET `usetimes`=`usetimes`+1,`lastusetime`=" . TIME . " WHERE `tag`='$tag'"; $update_catexisttag = "UPDATE `" . DB_PRE . "category_tag` SET `usetimes`=`usetimes`+1,`lastusetime`=" . TIME . " WHERE `tag`='$tag' AND `catid`='$catid'"; if (! $existtag) { $this->db->query ( $replace_into_existtag ); $this->db->query ( $replace_into_catexisttag ); } else { if ($action_add) { $this->db->query ( $update_existtag ); if ($catexisttag) { $this->db->query ( $update_catexisttag ); } else { $this->db->query ( $replace_into_catexisttag ); } } else { if (!$catexisttag) $this->db->query ( $replace_into_catexisttag ); } } } return implode ( ' ', $keywords ); } |
说明:
1.由于PHPCMS程序本身的关键字计数方法不合理,对于已经存在于keyword表中的关键字,如果编辑有相应关键字的文章,它的usetimes(使用次数)仍然会增加,而事实上,关键字所包含的文章并未增加。
这里提供的修改文件已经修复了这个问题,但是不会影响原来数据表中的计数。
2.本修改不改变PHPCMS数据表其它表的结构,程序文件改动也非常少,请放心使用,但万一使用过程中出现错误,直接用原来的文件覆盖就可以了。