程序员人生 网站导航

PHPCMS 添加栏目获取关键字功能的教程

栏目:DedeCMS时间:2013-12-06 08:57:45

  网(LieHuo.Net)教程 PHPCMS 添加栏目获取关键字的功能,第一步:增加名为category_tag的数据表(前缀与你的PHPCMS程序安装时选用的前缀相同,例如:phpcms_category_tag)

  表的结构如下

表结构1.png

  索引类型

QQ截图未命名.png

  第二步:找到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数据表其它表的结构,程序文件改动也非常少,请放心使用,但万一使用过程中出现错误,直接用原来的文件覆盖就可以了。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐