使用CodeIgniter进行站点搜索?

时间:2010-05-12 10:24:14

标签: php codeigniter pagination search-engine

我需要使用分页进行简单的网站搜索;谁能告诉我如何在不影响URL结构的情况下做到这一点?目前我正在使用默认的CodeIgniter URL结构,我已从中删除了index.php。有什么建议吗?

4 个答案:

答案 0 :(得分:3)

您可以使用/search/search_term/page_number之类的网址。

设置这样的路线:

$route['search/:any'] = "search/index";

你的控制器是这样的:

function index()
{
    $search_term = $this->uri->rsegment(3);

    $page = ( ! $this->uri->rsegment(4)) ? 1 : $this->uri->rsegment(4);

    // some VALIDATION and then do your search
}

答案 1 :(得分:1)

只是为了更新这个问题。最好使用以下功能:

$uri = $this->uri->uri_to_assoc()

然后结果将所有内容放入一个关联数组中,如下所示:

[array]
(
    'name' => 'joe'
    'location'  => 'UK'
    'gender'    => 'male'
)

详细了解URI Class at CodeIgniter.com

答案 2 :(得分:0)

不太明白“影响网址结构”是什么意思。你的意思是你想要在没有URL改变的情况下发生分页吗?

CI中的标准分页类允许您设置分页,以便URL中唯一的更改将是最后的数字

例如,如果您的网址有5个结果,则您的网址可能是

http://www.example.com/searchresults

然后第2页将是

http://www.example.com/searchresults/5

和第3页将是

http://www.example.com/searchresults/10

等等。

如果您想在不更改URL的情况下执行此操作,请使用ajax我猜。

答案 3 :(得分:0)

代码点火器默认禁用GET查询,但如果您希望网址显示搜索字符串,则可以构建替代

您的网址可以是符号 的 www.yoursite.com/index.php/class/function/request1:value1/request2:value2

$request = getRequests();
echo $request['request1'];
echo $request['request2'];

function getRequests() 
{ 
    //get the default object 
    $CI =& get_instance(); 
    //declare an array of request and add add basic page info 
    $requestArray = array(); 
    $requests = $CI->uri->segment_array();
    foreach ($requests as $request)
    { 
        $pos = strrpos($request, ':');
        if($pos >0)
        {
            list($key,$value)=explode(':', $request);
            if(!empty($value) || $value='') $requestArray[$key]=$value;
        }
    }
    return $requestArray ; 
} 

来源:http://codeigniter.com/wiki/alternative_to_GET/