其他分享
首页 > 其他分享> > ptootcms修改查询功能,例子:按条件查询出注册会员列表

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