K9 通用版 博客版 主题版 地方门户版 企业版 |   企业(ASP) 分类 使用 分享 疑问 模板 建议 帮助 错误 其他
+新建主题 [Ajax]
填写帐号密码即可完成注册
+新建话题 最新回复排序 最新主题排序 精华帖子

关键字带空格

12Next >

ahao303 发表于:10-09-10 11:24 [添加收藏] 楼主 [回复] #Top#
ahao303 人气:152 积分:1877 金币:10882
KC元老
关键字带空格默认变成两个关键字,比方说King CMS 会变成 King,CMS 目前我解决办法是在模型那新建一个字段,不过关键字不会自动添加,要手动

还有META关键字碰到英文文章,空格都没有掉了

因做英文站比较多,故建议,把空格替换"," 给取消了,
pktsandy 发表于:10-09-10 17:15 沙发 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
哪你去改源码好了
ahao303 发表于:10-09-20 23:50 板凳 [回复] #Top#
ahao303 人气:152 积分:1877 金币:10882
KC元老
搜索的带空格的代码有办法改,关键字的,那段代码我死活找不到。
SinCS 发表于:10-09-20 23:52 4楼 [回复] #Top#
SinCS 人气:1148 积分:28 金币:73406
VIP 管理团队 特殊贡献
估计是正则表达式,找找正则代码,相关的调用函数估计是preg_replace。
史册 发表于:10-09-21 09:52 5楼 [回复] #Top#
史册 人气:48 积分:242 金币:1898
VIP KC元老
灰太狼。。。
tiaobaowang 发表于:10-10-09 22:41 6楼 [回复] #Top#
tiaobaowang 人气:0 积分:126 金币:250
改下源码,如果你是高手
lynnyjh 发表于:10-10-11 10:26 7楼 [回复] #Top#
lynnyjh 人气:93 积分:262 金币:971
高手真多
ahao303 发表于:10-11-30 10:30 编辑于:11-30 10:32 8楼 [回复] #Top#
ahao303 人气:152 积分:1877 金币:10882
KC元老
估计在这个里面找,不过怎么改我还不清楚
portal/core.class.php


/**

从关键字列表中返回所包含的关键字 或 补充&更新系统关键字组

@param string $key   已有的关键字,如果有值,则读取系统关键字组进行更新
@param string $str   如果$key为空值,则根据$str返回关键字

*/
public function getKey($str,$key=''){
global $king;

$keywords=$king->config('keywords','portal');


if(isset($key{0})){//若有关键字列表,则进行更新操作

$key_array=preg_split("/[s,]+/",$key);
if(isset($keywords{0})){//更新关键字组,并返回$key
$keywords_array=explode('|',$keywords);
foreach($key_array as $val){
$keywords_array[]=$val;
}
$new_array=array_unique($keywords_array);//删除重复值
$new_array=array_diff($new_array,array(''));//删掉空格
$s=implode('|',$new_array);
$king->db->update('%s_system',array('kvalue'=>$s),'kname='keywords'');
}else{//更新关键字组
$s=implode('|',$key_array);
// $s=str_replace(',','|',$key);
$king->db->update('%s_system',array('kvalue'=>$s),'kname='keywords'');
}
$king->cache->del('system/config/portal');
return implode(',',$key_array);
}else{
if(isset($keywords{0})){
$array=explode('|',$keywords);
$arr=array();

foreach($array as $val){
$num=stripos($str,$val);

if(kc_validate($num,2))
$arr[]=$val;
}

array_unique($arr);//删除重复值

$arr=array_diff($arr,array(null));//去掉空值

return implode(',',$arr);//输出内容
}
}
}
/**

返回Tag列表 或 添加Tag到列表中

@param string $key   已有的Tag,如果有值,则对%s_tag进行更新
@param string $str   如果$key为空,则根据$str来获得Tag

*/
public function getTag($str,$key=''){
global $king;

if($key!=''){//若有关键字列表,则进行更新操作
$array_key=preg_split("/[s,]+/",$key);
foreach($array_key as $val){
if(!$_res=$king->db->getRows_one("select kid from %s_tag where ktag='".$king->db->escape($val)."'")){
$array=array(
'ktag'=>$val,
'kcolor'=>'#000000',
'ktemplate1'=>$king->config('templatepath')."/".$king->config('templatedefault'),
'ktemplate2'=>$king->config('templatepath')."/inside/tag/".$king->config('templatedefault'),//template/inside/tag/default.htm
'norder'=>$king->db->neworder('%s_tag'),
);
$king->db->insert('%s_tag',$array);
};
}
return implode(',',$array_key);
}else{
if(!$res=$king->db->getRows("select ktag from %s_tag limit 200;"))
$res=array();

$arr=array();

foreach($res as $rs){
$num=stripos($str,$rs['ktag']);
if(kc_validate($num,2))
$arr[]=$rs['ktag'];
}
array_unique($arr);//删除重复
$arr=array_diff($arr,array(null));
return implode(',',$arr);
}
}
youjoy 发表于:10-11-30 13:23 编辑于:11-30 13:29 9楼 [回复] #Top#
youjoy 人气:234 积分:736 金币:5396
VIP
关键字支持空格,大概要改以下两处:

portal/core.class.php 中:
public function getKey($str,$key=''){ 
内部:
$key_array=preg_split("/[s,]+/",$key);
改为:
$key_array=explode(',',$key);

public function getTag($str,$key=''){
内部:
$array_key=preg_split("/[s,]+/",$key);
改为:
$array_key=explode(',',$key);

这样改了以后,你在输入关键字的时候就必须用,分隔。

说明:原来老大用的正则,这里就没必要了,所以用了explode函数。如果你想用其它的符合来分隔也可以,在前面加上一个替换(替换成,)就可以了。
pktsandy 发表于:10-11-30 13:47 10楼 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
睡觉

12Next >

发表回复

帐号 匿名发布 审核后可见 [加载完整在线编辑器]
内容
验证码
KingCMS 内容管理系统

关于我们 联系我们 广告报价 付款方式 站点导航

Copyright © 2004-2015 Focuznet All rights reserved.

广州唯众网络科技有限公司 粤ICP备08008106号