在codeigniter中使用slugs

时间:2010-07-22 04:29:56

标签: php codeigniter slug clean-urls

我听说有人用slu to来生成干净的网址。我不知道它是如何工作的。 目前我有一个codeigniter网站,生成这样的网址

www.site.com/index.php/blog/view/7

根据我的理解,通过维持一个slug字段,可以实现像

这样的网址
www.site.com/index.php/blog/view/once-upon-a-time

这是怎么做到的?特别是参考codeigniter?

4 个答案:

答案 0 :(得分:48)

我只是将slug存储在我的数据库表中,在一个名为slug的列中,然后找到一个带有slug的帖子,如下所示:

public function view($slug)
{
    $query = $this->db->get_where('posts', array('slug' => $slug), 1);

    // Fetch the post row, display the post view, etc...
}

另外,要轻松从帖子标题中获取一个slug,只需使用URL帮助器的url_title()

// Use dashes to separate words;
// third param is true to change all letters to lowercase
$slug = url_title($title, 'dash', true);

一点奖励:您可能希望对slug列实施唯一键约束,以确保每个帖子都有一个唯一的slug,因此CodeIgniter应该查找的帖子不明确。当然,你应该首先给你的帖子提供独特的标题,但是把它放在适当位置强制执行规则并防止你的应用程序搞砸了。

答案 1 :(得分:3)

您可以使用Eric Barnes的CI Slug Library:

https://github.com/ericbarnes/CodeIgniter-Slug-Library

答案 2 :(得分:0)

对于我的ES朋友,请使用Text Helper:

删除重音字符
    $string = 'áéíóú ÁÉÍÓÚ';    
    $slug = url_title(convert_accented_characters($string), 'dash', true));
    echo $slug; //aeiou-AEIOU

答案 3 :(得分:0)

在codeigniter中创建Page slug

创建名为slug_helper.php的Helper

methodOne.subscribe((resp){
    return resp;
});

methodoTwo(resp).subscribe((resp2){     
    return resp2; 
});