今天给各位分享phpcms搜索不出数据的知识,其中也会对phpcms数据库进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、PHPCMS GET标签调取不了相应的数据
- 2、phpcms v9怎么按栏目搜索
- 3、phpcms v9为什么搜索标题中含有的很多关键词都没有搜索结果?
- 4、phpcms v9 搜索结果列表页不显示搜索结果
- 5、您好,我想问一下 我使用PHPCMS添加文章时报错 但是能显示 但是数据库却没数据 这是怎么回事?
- 6、访问phpcms开发的网站,无法显示数据,css失效
1、PHPCMS GET标签调取不了相应的数据
看了你调用get万能标签的代码,建议一个几个地方改下:
首先,return属性的值我们只写返回变量的名称就可以,不用带$,也就是:return="data"。另外,系统默认就是以$data变量携带获取的数据返回,所以这里return="data"可以不写,即:
{pc:get sql="SELECT * FROM hf_zsc" num="18"}
{/pc}
再者,我们在万能标签中写数据表名的时候,为了有更好的兼容性、安全性,可以直接用默认前缀“phpcms_”,用这个标签引擎在解析的时候会自动给你替换成你配置的数据库表前缀。
{pc:get sql="SELECT * FROM phpcms_zsc" num="18"}
{/pc}
PS:你查询不出数据应该是因为return那里多加了一个$的原因吧。至于为什么出来“catid=27 的那个数据”,是因为在此之前你调用过“catid=27 的那个数据”,而且它也是放到$data这个变量里,所以你打印$data自然就是它了。
2、phpcms v9怎么按栏目搜索
修改了全部栏目搜索不到数据的bug
1、修改后台添加、修改内容时添加栏目id到搜索表中
找到 phpcms\model\content_model.class.php 大概106、287行左右,一共两处
$this-search_api($id,$inputinfo);
修改为:
$this-search_api($id,$systeminfo['catid'],$inputinfo);
找到 大概381行,将private function search_api 方法替换为以下代码
private function search_api($id = 0,$catid, $data = array(), $action = 'update') {
$type_arr = getcache('search_model_'.$this-siteid,'search');
$typeid = $type_arr[$this-modelid]['typeid'];
if($action == 'update') {
$fulltext_array = getcache('model_field_'.$this-modelid,'model');
foreach($fulltext_array AS $key=$value){
if($value['isfulltext']) {
$fulltextcontent .= $data['system'][$key] ? $data['system'][$key] : $data['model'][$key];
}
}
$this-search_db-update_search($typeid ,$id, $fulltextcontent,addslashes($data['system']['title']).' '.addslashes($data['system']['keywords']),$data['system']['inputtime'],'',$catid);
} elseif($action == 'delete') {
$this-search_db-delete_search($typeid ,$id);
}
}
2、修改搜索模板文件
找到 phpcms\model\search_model.calss.php 的 21行左右
将 update_search 方法替换为:
public function update_search($typeid ,$id = 0,$data = '',$text = '',$adddate = 0, $iscreateindex=0,$catid) {
$segment = pc_base::load_sys_class('segment');
//分词结果
$fulltext_data = $segment-get_keyword($segment-split_result($data));
$fulltext_data = $text.' '.$fulltext_data;
if(!$iscreateindex) {
$r = $this-get_one(array('typeid'=$typeid,'id'=$id),'searchid');
}
if($r) {
$searchid = $r['searchid'];
$this-update(array('data'=$fulltext_data,'adddate'=$adddate,'catid'=$catid),array('typeid'=$typeid,'id'=$id));
} else {
$siteid = param::get_cookie('siteid');
$searchid = $this-insert(array('typeid'=$typeid,'id'=$id,'adddate'=$adddate,'data'=$fulltext_data,'siteid'=$siteid,'catid'=$catid),true);
}
return $searchid;
}
3、修改后台更新全站缓存位置
找到phpcms\models\content\classes\search_api.class.php 的第 31行
将 $system_keys = 'id,inputtime'.implode(',',$system_keys);
修改为
$system_keys = 'id,inputtime,catid,'.implode(',',$system_keys);
找到 $temp['adddate'] = $r['inputtime'];在后面加上
$temp['catid'] = $r['catid'];
找到phpcms\models\search\search_admin.php大概第85行,将foreach修改为下面
foreach ($datas as $id=$r) {
$this-db-update_search($typeid ,$id, $r['fulltextcontent'],$r['title'],$r['adddate'], 1,$r['catid']);
}
4、修改前台搜索程序
找到 phpcms\models\search\index.php 第25行
在 if(isset($_GET['q'])) { 下加上
$catid =$_GET['catid']?" AND catid = '$_GET[catid]'":'';
然后在第57行左右,将
$commend = $this-db-get_one("`typeid` = '$typeid' $sql_time AND `data` like '%$q%'");
修改为
$commend = $this-db-get_one("`typeid` = '$typeid' $sql_time $catid AND `data` like '%$q%'");
再找到第84行左右将
//如果分词结果为空
if(!empty($segment_q)) {
$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND MATCH (`data`) AGAINST ('$segment_q' IN BOOLEAN MODE)";
} else {
$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";
}
修改为
//如果分词结果为空
if(!empty($segment_q)) {
$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $catid $sql_time AND MATCH (`data`) AGAINST ('$segment_q' IN BOOLEAN MODE)";
} else {
$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $catid $sql_time AND `data` like '%$q%'";
}
5、最后一步,到数据库中,找到数据表 表前缀_search,在此表中加一字段 catid int 4 做个索引,去按栏目id搜索试试吧,可以了,调试可用。
3、phpcms v9为什么搜索标题中含有的很多关键词都没有搜索结果?
最近一段时间一直对phpcms v9的搜索功能,几次想进行大的改动,但是一直没时间考虑思路,不得已在原来的搜索功能的基础上把搜索的分词给改动了下,虽然不如意,但是也能将就着用。进入到phpcms/modules/search/index.php文件,找到//如果分词结果为空if(!empty($segment_q)) {$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND MATCH (`data`) AGAINST ('$segment_q' IN BOOLEAN MODE)";} else {$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";}修改为:$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";这样基本上就能解决一般的搜索功能了。 查看更多答案
4、phpcms v9 搜索结果列表页不显示搜索结果
看下传递的参数对么?
typeid= 搜索分类id
siteid=网站id
q=关键词
这三个是必须的。
form action="{APP_PATH}index.php" method="get" target="_blank"
input type="hidden" name="m" value="search"/
input type="hidden" name="c" value="index"/
input type="hidden" name="a" value="init"/
input type="hidden" name="typeid" value="1" id="typeid"/ //name="typeid"搜索分类,如果不需要分类也需要提供一个默认值。1是文章模型,可以在后台全站搜索里面看到。
input type="hidden" name="siteid" value="1" id="siteid"/
//name="siteid"获取站点id
input id="shuru" value=补气血 type=input name="q"/ // name="q"获取输入关键词
input type="submit" value="搜 索" class="button" id="tijiao" /
/form
下面是调用列表的代码。
span style="padding-left:10px"获得约 {$totalnums} 条结果 (用时{sprintf("%01.2f", $execute_time)} 秒)/span
ul class="e2"
{loop $data $i $r}
liba href='{$r[url]}'{$r[title]}/a/bspan class="info"small日期:/small{format::date($r[inputtime], 1)}/span
p class="intro" {$r[description]}../p
/li
{/loop}
{if empty($data)}未找到结果{/if}
/ul
以上的代码是亲测可行的。你自己看下哪里有问题。
5、您好,我想问一下 我使用PHPCMS添加文章时报错 但是能显示 但是数据库却没数据 这是怎么回事?
可能是栏目没有绑定模板,或者没有栏目绑定的模板。数据能显示,数据库没有数据就是缓存问题。更新缓存,更新栏目页,内容页,刷新再看!
6、访问phpcms开发的网站,无法显示数据,css失效
一般是调用css路径时出问题了 估计是路径被解释成本地绝对路径了 因为你在本地电脑所以可以用 用别人电脑不能访问就不怪了 简单的说就是被解释成C:/css/.... 那不是肯定找不到吗
你把路径前面加上%=ResolveUrl("~") %让它自己找路径
比如
link href="./SpryAssets/SpryCollapsiblePanel.css" rel="stylesheet" type="text/css"
改成
link href="%=ResolveUrl("~") %SpryAssets/SpryCollapsiblePanel.css" rel="stylesheet" type="text/css"
应该可以 一般都是这样做的
因为牵涉到虚拟机解释等等的问题 原理我也不是很清楚 你试试
关于phpcms搜索不出数据和phpcms数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。