ptootcms修改查询功能,例子:按条件查询出注册会员列表
作者:互联网
该系统的查询功能,主要是通过标题中的关键词查询文章,一般来说够用,但是查询其他的信息列表则需要涉及到修改。
1,在ParserModel.php里添加方法。
路径:/apps/home/model/ParserModel.php
作用:相当于存储sql语句的地方。
修改:在大约492行,搜索“// 列表内容,不带分页,不区分语言,兼容跨语言”方法的下一行添加新的方法。
// 会员列表内容,不带分页,不区分语言,不兼容跨语言 public function getMemberList($keyword) { // 筛选条件支持模糊匹配 return parent::table('ay_member')->field("*") ->where('nickname LIKE "%'.$keyword.'%"') ->decode() ->select(); }
简单的直接按照昵称搜索会员列表。
2,修改ParserController.php的代码,并添加新方法。
路径:/apps/home/controller/ParserController.php
修改:找到注释“// 解析内容搜索结果标签”,方法名为“parserSearchLabel”,在$keyword下添加新的搜索关键字$searchtype。
$keyword = request('keyword', 'vars'); $searchtype = request('searchtype', 'vars');
修改,找到该方法里的注释,“// 读取数据”,修改date读取数据的方法。
以搜索结果不分页为例。
// 读取数据 if ($page) { if (isset($paging)) { error('请不要在一个页面使用多个具有分页的列表,您可将多余的使用page=0关闭分页!'); } else { $paging = true; $data = $this->model->getLists($scode, $num, $order, $where1, $where2, $where3, $fuzzy, $start, $lfield, $lg); } } else { if($searchtype == "member"){ $data = $this->model->getMemberList($keyword); }else{ $data = $this->model->getList($scode, $num, $order, $where1, $where2, $where3, $fuzzy, $start, $lfield, $lg); } }
现在自己的使用getMemberList()方法,只能限定在page=0,searchtype=member的条件下使用。
修改:找到注释“// 循环替换数据”里,修改代码。
foreach ($data as $value) { // 按查询数据条数循环 $one_html = $matches[2][$i]; for ($j = 0; $j < $count2; $j ++) { // 循环替换数据 $params = $this->parserParam($matches2[2][$j]); if($searchtype == "member"){ $one_html = $this->parserMemberList($matches2[1][$j], $matches2[0][$j], $one_html, $value, $params, $key); }else{ $one_html = $this->parserList($matches2[1][$j], $matches2[0][$j], $one_html, $value, $params, $key); } } $key ++; $out_html .= $one_html; }
这一步骤是,在searchtype=member的条件下,对自己的标签[search:xxxxx]进行替换。
既然不是使用parserList而是使用了parserMemberList,自然也要添加该方法。
修改:找到“// 解析列表标签”,方法为“parserList”的下面,添加新的方法,parserMemberList。
// 解析会员列表标签 protected function parserMemberList($label, $search, $content, $data, $params, $key) { switch ($label) { case 'n': $content = str_replace($search, $this->adjustLabelData($params, $key) - 1, $content); break; case 'i': $content = str_replace($search, $this->adjustLabelData($params, $key), $content); break; case 'ucode': $content = str_replace($search, $this->adjustLabelData($params, $data->ucode, $label, true), $content); // 占位替换 break; case 'nickname': $content = str_replace($search, $this->adjustLabelData($params, $data->nickname, $label, true), $content); // 占位替换 break; case 'headpic': $content = str_replace($search, $this->adjustLabelData($params, $data->headpic, $label, true), $content); // 占位替换 break; case 'useremail': $content = str_replace($search, $this->adjustLabelData($params, $data->useremail, $label, true), $content); // 占位替换 break; case 'usermobile': $content = str_replace($search, $this->adjustLabelData($params, $data->usermobile, $label, true), $content); // 占位替换 break; default:break; } return $content; }
现在即可通过[search:headpic]来找到头像之类的。
前端的代码如下:
<form action="{pboot:scaction}" method="get" > <input type="text" name="keyword" id="" value="{pboot:keyword}" placeholder="搜索会员" /> <input type="hidden" name="searchtype" value="member" > <input type="hidden" name="searchtpl" value="searchmember.html" /> <img src="/template/default/images/ico_search_black.png" > </form>
{pboot:search page=0} <div class="col-xs-12 pad0 mt15"> <div class="top flex"> <div class="head"> <img src="[search:headpic]" /> </div> <div class="info"> <h1> [search:nickname mark=1] </h1> <div class="tag"> <span class="blue"><img src="/template/default/images/sexn.png" > 男</span> <span class="yellow">LV.5</span> <span class="white">管理员</span> </div> <span class="pubdate">粉丝数:12万</span> </div> <div class="flex gz"> <div class="borbutton">+关注</div> </div> </div> </div> {/pboot:search}
会员列表很可能因为未来的扩展变得复杂,这个时候自然可以替换更多的信息,不止包括昵称,头像等等。
标签:case,ptootcms,search,列表,content,params,break,查询,data 来源: https://www.cnblogs.com/captain1024/p/15921708.html